Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.openfuxml.addon.wiki.parser;
  
  import java.io.File;
  import java.util.List;
  
 
 import  net.sf.exlp.event.LogEventHandler;
 import  net.sf.exlp.event.handler.EhResultContainer;
 import  net.sf.exlp.listener.LogListener;
 import  net.sf.exlp.listener.impl.LogListenerXml;
 import  net.sf.exlp.parser.AbstractLogParser;
 import  net.sf.exlp.parser.LogParser;
 import  net.sf.exlp.util.io.LoggerInit;
 
 import  org.openfuxml.addon.wiki.data.jaxb.Ofxchart;
 import  org.openfuxml.addon.wiki.data.jaxb.Ofxchartcontainer;
 import  org.openfuxml.addon.wiki.data.jaxb.Ofxchartdata;
 import  org.slf4j.Logger;
 import  org.slf4j.LoggerFactory;
 
 public class WikiTimelineParser extends AbstractLogParser implements LogParser  
 {
 	final static Logger logger = LoggerFactory.getLogger(WikiTimelineParser.class);
 	private static enum Section {none,bardata,plotdata};
 	
 	private Section section;
 	
 	private Ofxchart ofxChart;
 	
 	public WikiTimelineParser(LogEventHandler leh)
 	{
 		super(leh);
 		=new ArrayList<Pattern>();
 		
 		.add(Pattern.compile("BarData=(.*)"));
 		.add(Pattern.compile("PlotData=(.*)"));
 		
 		.add(Pattern.compile("[ ]*bar:(\\d*) text:([\\d\\w]*)(.*)"));
 		
 		.add(Pattern.compile("[ ]*bar:(\\d*) from:(\\d*) till: (\\d*)(.*)"));
 		.add(Pattern.compile("[ ]*bar:(\\d*) at:(\\d*)(.*)"));
 		.add(Pattern.compile("[ ]*color:(\\w*)(.*)"));
 	}
 
 	public void parseLine(String line)
 	{
 		.append(" parseLine:"+line);
 		allLines++;
 		boolean unknownPattern = true;
 		for(int i=0;i<.size();i++)
 		{
 			Matcher m=.get(i).matcher(line);
 			if(m.matches())
 			{
 				switch(i)
 				{
 					case 0:  = .;.append(" new-BarData");break;
 					case 1:  = .;
 							Ofxchartcontainer ds = new Ofxchartcontainer();
 							ds.setType("dataseries");
 							.getOfxchartcontainer().add(ds);
 							.append(" new-PlotData");
 							break;		
 				}
 				i=.size();
 				unknownPattern=false;
 			}
 		}
 		if(unknownPattern)
 		{
 			.warn("Unknown pattern: " +line);
 			unknownLines++;
 		}
 	}
 	
 	private void parseBarData(String line)
 	{
 		.append(" parseBarData:"+line);
 		boolean unknownPattern = true;
 		for(int i=0;i<.size();i++)
 		{
 			if(m.matches())
 			{
 				switch(i)
 				{
 					case 0: addChartData(m.group(1), m.group(2),"label");break;	
 				}
				unknownPattern=false;
			}
		}
		if(unknownPattern)
		{
			.append(" UNKNOW ... parsing line!");
			parseLine(line);
		}
	}
	private void addChartData(String xString dataTypeString containerType)
	{
		Ofxchartdata cs = new Ofxchartdata();
		cs.setType(dataType);
		cs.setValue(new Double(x));
		boolean labelContanerMissing=true;
		for(Ofxchartcontainer ofxChartContainer : .getOfxchartcontainer())
		{
			if(ofxChartContainer.getType().equals(containerType))
			{
				ofxChartContainer.getOfxchartdata().add(cs);
				labelContanerMissing = false;
				break;
			}
		}
		if(labelContanerMissing)
		{
			Ofxchartcontainer cc = new Ofxchartcontainer();
			cc.getOfxchartdata().add(cs);
			cc.setType(containerType);
			.getOfxchartcontainer().add(cc);
		}
	}
	private void parsePlotData(String line)
	{
		.append(" parsePlotData:"+line);
		boolean unknownPattern = true;
		for(int i=0;i<.size();i++)
		{
			if(m.matches())
			{
				switch(i)
				{
					case 0: addPlotData(m);break;	
				}
				unknownPattern=false;
			}
		}
		if(unknownPattern)
		{
			parseLine(line);
		}
	}
	private void addPlotData(Matcher m)
	{
		Ofxchartcontainer ofxDataSet = new Ofxchartcontainer();
		ofxDataSet.setType("dataset");
		Ofxchartdata dX = new Ofxchartdata();
		dX.setType("X");
		dX.setValue(new Double(m.group(1)));
		ofxDataSet.getOfxchartdata().add(dX);
		Ofxchartdata dMinY = new Ofxchartdata();
		dMinY.setType("minY");
		dMinY.setValue(new Double(m.group(2)));
		ofxDataSet.getOfxchartdata().add(dMinY);
		Ofxchartdata dMaxY = new Ofxchartdata();
		dMaxY.setType("maxY");
		dMaxY.setValue(new Double(m.group(3)));
		ofxDataSet.getOfxchartdata().add(dMaxY);
		int index = .getOfxchartcontainer().size()-1;
		.getOfxchartcontainer().get(index).getOfxchartcontainer().add(ofxDataSet);
	}
	private void parse(String line)
	{
		switch()
		{
			case parseLine(line);break;
			case parseBarData(line);break;
			case parsePlotData(line);break;
		}
	}
	public void parseItem(List<Stringitem)
	{
		 = new Ofxchart();
		.setType("bar");
		.debug("Item received with "+item.size()+" entries");
		for(String line : item){parse(line);}
//		debug();
		leh.handleEvent(event);
	}
	private void debug()
	{
		try
		{
			JAXBContext context = JAXBContext.newInstance(Ofxchart.class);
			Marshaller m = context.createMarshaller(); 
		}
		catch (JAXBException e) {.error("",e);}
	}
	public static void main(String args[])
	{
		LoggerInit loggerInit = new LoggerInit("log4j.xml");	
			loggerInit.addAltPath("resources/config");
			loggerInit.init();
		LogEventHandler leh = new EhResultContainer();
		LogParser lp = new WikiTimelineParser(leh);
		LogListener ll = new LogListenerXml("resources/data/timeline.xml",lp);
		ll.processMulti("/wikiinjection/wikicontent");
		EhResultContainer results = (EhResultContainer)leh;
		.debug("Results: "+results.getAlResults().size());
		WikiChartEvent event = (WikiChartEvent)results.getAlResults().get(0);
		Ofxchart ofxChart = event.getOfxChart();
		try
		{
			JAXBContext context = JAXBContext.newInstance(Ofxchart.class);
			Marshaller m = context.createMarshaller(); 
			m.marshal(ofxChartnew File("resources/data/timeline-ofxchart.xml"));
		}
		catch (JAXBException e) {.error("",e);}
	}
New to GrepCode? Check out our FAQ X