All pastes #71647 Raw Edit

Someone

public java v1 · immutable
#71647 ·published 2006-06-26 00:11 UTC
rendered paste body
package at.ac.tuwien.media.atmel.parser;import java.io.*;import java.util.*;import java.util.logging.*;public class ConvertPD {		private class Pair{			public int x;		public int y;			public Pair(int x,int y){			this.x=x;			this.y=y;		}	}		private ObjectConf objConf;		private Logger log;	private ArrayList<PDObject> objectList;			public ConvertPD(String config)	{		objConf = new ObjectConf();		log   = Logger.getLogger("convpd.PDConverter");		readConfig(config);      				}		public void writeCHeader(String fileOut) {		try{								FileWriter outputFileWriter  = new FileWriter(fileOut);			BufferedWriter outputStream  = new BufferedWriter(outputFileWriter);			outputStream.write(objConf.getStrC());			outputStream.close();					}catch(IOException e) {			log.warning(e.getMessage());			e.printStackTrace();		}		}		public void generatePDS(String dir) {				objConf.generateAllPDS( dir);	}		private void readConfig(String fileIn) {			String inLine = null;		int version=0;		int subversion=0;		try{						FileReader inputFileReader   = new FileReader(fileIn);			BufferedReader inputStream   = new BufferedReader(inputFileReader);						log.info("config file: "+fileIn+" opened.");			while ((inLine = inputStream.readLine()) != null) {									if(inLine.startsWith("ATMEL_VERSION")){						version=Integer.parseInt((inLine.split(" "))[1]);						log.info("Version: "+version);					}					else if(inLine.startsWith("ATMEL_SUBVERSION")){						version=Integer.parseInt((inLine.split(" "))[1]);						log.info("Subversion: "+subversion);					}					else if(!inLine.startsWith("#"))objConf.addEntry(inLine);			}			objConf.setVersion(version,subversion);			inputStream.close();			log.info("config file closed");				}catch(IOException e) {			log.warning(e.getMessage());			e.printStackTrace();		}			}		public void importPD(String fileIn){			objectList=new ArrayList<PDObject>();		String inLine = null;					try{						FileReader inputFileReader   = new FileReader(fileIn);			BufferedReader inputStream   = new BufferedReader(inputFileReader);						log.info("input file: "+fileIn+" opened.");						int c=0;						while ((inLine = inputStream.readLine()) != null) {								String[] split=inLine.split(" ");								if(inLine.startsWith("#X text")) {										objectList.add(new PDObject(c,0,"*dummy*","00"));					log.info("Dummy Object !!!!!! "+c+" (text) added." );					c++;				}							if(inLine.startsWith("#X obj"))	{					int lastWrd=-1;					int objPos=4;					if(split[objPos].endsWith(";")){							split[objPos]=split[objPos].substring(0,split[objPos].length()-1);							lastWrd=objPos-4;					}										PDObject tempObj = new PDObject(c,objConf.getInCount(split[objPos]),split[objPos],objConf.getBytecode(split[objPos]));					for(int i=0;i<split.length;i++)	{										if(split[i].endsWith(";")) {														split[i]=split[i].substring(0,split[i].length()-1);							lastWrd=i-4;						}						if(i>4)tempObj.addParam(split[i]);					}										if(lastWrd<0)throw new Exception("Corrupt PD File. (obj)");										if(objConf.getParamCount(split[objPos])!=lastWrd) throw new Exception("Parameter count mismatch for: "+split[objPos]);												objectList.add(tempObj);					log.info("Object "+c+": "+split[objPos]+" added." );					c++;														}								if(inLine.startsWith("#X connect")){										if(split[5].endsWith(";")) split[5]=split[5].substring(0,split[5].length()-1);					else throw new Exception("Corrupt PD File. (connect)");					int out_id=Integer.parseInt(split[2]);					int out_pos=Integer.parseInt(split[3]);					int in_id=Integer.parseInt(split[4]);					int in_pos=Integer.parseInt(split[5]);					log.info("Connecting output "+out_pos+" of "+out_id+". "+objectList.get(out_id).getName()+" to input "+in_pos+" of "+in_id+". "+objectList.get(in_id).getName()+".");										objectList.get(in_id).addInput(in_pos,objectList.get(out_id),out_pos);				}									}					inputStream.close();			log.info("input file closed");				}catch(IOException e) {			log.warning(e.getMessage());			e.printStackTrace();		}catch(Exception e) {			log.warning(e.getMessage());			e.printStackTrace();		}	}	public void writeROM(String fileOut) {				String stringRom = new String("\n");				ArrayList<Integer> markExported;		ArrayList<Pair> markShifted;		ArrayList<Integer> markResolved;		try{					FileOutputStream fileOutStream  = new FileOutputStream(fileOut);			BufferedOutputStream outputStream  = new BufferedOutputStream(fileOutStream);			markExported=new ArrayList<Integer>();			markShifted=new ArrayList<Pair>();			markResolved=new ArrayList<Integer>();								int nextID=0;						boolean repeat=true;			while(repeat){			repeat=false;								for(int i=0;i<objectList.size();i++)			{								PDObject temp=objectList.get(i);				// if this object has not been added yet//				System.out.println("try:"+temp.getName()+","+temp.inObjects.length);				if(!markExported.contains(i)&&!temp.getName().equals("*dummy*"))				{					boolean resolved=true;					for(int j=0;j<temp.inObjects.length;j++)					{						if(!markResolved.contains(objectList.get(i).inObjects[j][0].getID()))resolved=false;					}					if(resolved){												for(int j=0;j<objectList.size();j++)							for(int k=0;k<objectList.get(j).inObjects.length;k++)								{									boolean rename=true;									for(int l=0;l<markShifted.size();l++)									if(markShifted.get(l).x==j&&markShifted.get(l).y==k)rename=false;									if(rename)										if(objectList.get(j).inObjects[k][0].getID()==temp.getID()){										log.config("renaming "+temp.getID()+" to "+nextID+" for pair: "+j+","+k);											objectList.get(j).inObjects[k][0].setID(nextID);											markShifted.add(new Pair(j,k));										}																		}												temp.setID(nextID);																							repeat=true;//						System.out.println("export:"+temp.getName());						outputStream.write(temp.getID());						outputStream.write(Integer.parseInt(temp.bytecode,16));												stringRom+=(temp.getID()+" = "+temp.getName()+" ");												for(int k=0;k<temp.params.size();k++)						{							int c=Integer.parseInt(temp.params.get(k),10);							outputStream.write(c);							stringRom+=(" ["+c+"] ");						}												for(int j=0;j<temp.inObjects.length;j++)						{								 //outputStream.write(253);								//outputStream.write(temp.inObjects[j][0].getID());							   	 outputStream.write(objectList.get(i).inObjects[j][0].getID());								 outputStream.write(temp.outputSelect[j]);								 stringRom+=(" "+temp.inObjects[j][0].getID()+" <"+temp.outputSelect[j]+">");						}//						markExported.add(temp.getID());						markExported.add(i);						markResolved.add(nextID);												try{							nextID+=objConf.getOutCount(temp.getName());//							if(objConf.getOutCount(temp.getName())==0)nextID++;													}catch(Exception ex){							log.warning("ERROR");						}												stringRom+=("\n");					}										}														}}			outputStream.write(255);			outputStream.close();			log.finest(stringRom);					}catch(IOException e) {			log.warning(e.getMessage());			e.printStackTrace();		}	}	/*		private void exportFile_dep(String fileOut) {						try{					FileWriter outputFileWriter  = new FileWriter(fileOut);			BufferedWriter outputStream  = new BufferedWriter(outputFileWriter);			for(int i=0;i<objectList.size();i++)			{				if(objectList.get(i).getName().equals("out")){					objectList.get(i).Dump();										objectList.get(i).export(outputStream);				}							}			outputStream.write(255);			outputStream.close();			}catch(IOException e) {			log.warning(e.getMessage());			e.printStackTrace();		}	}		public static void oldmain (String[] args) {	        		if(args.length!=5)		{			log.info("usage: java ConvertPD <input_file> <output_file> <config_file> <c_header_file> <pd_obj_dir>");			log.info("starting gui");			return;		}						String inputFileName  = args[0];		String outputFileName = args[1];		String configFileName = args[2];		String CHeaderFileName = args[3];		String PDObjectsDir = args[4];		try{						readConfig(configFileName);			writeConfig(CHeaderFileName);			importFile(inputFileName);			exportFile(outputFileName);			generatePDS(PDObjectsDir);							}catch(Exception e) {			log.warning(e.getMessage());			e.printStackTrace();		}								}*/				        }