Cod sursa(job #1354966)

Utilizator petru_ch94Petru C petru_ch94 Data 22 februarie 2015 11:31:07
Problema Convertor Scor 30
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.99 kb
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;


class Main {
	private static Vector< Vector<String> > storage;
	private static int mainField = 0;
	private static int query = 0;

	public Main() {
		storage = new Vector< Vector<String> >();
	}

	public static void readFromInternFile() throws IOException {
		BufferedReader br = null;
		try {
			br = new BufferedReader(new InputStreamReader(
					new FileInputStream("convertor.in"), "UTF8"));
			String line;		
			while((line = br.readLine()) != null) {
				processLine(line);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} finally {
			br.close();
		}
	}

	public static void printCSVinFile() throws FileNotFoundException, UnsupportedEncodingException {
		PrintWriter pw = new PrintWriter("convertor.out","UTF8");
		int size = storage.size();
		for(int j = 0; j < size; j++) {
			for(int k = 0; k < storage.get(j).size(); k++) {
				pw.print(storage.get(j).get(k) + ",");
			}
			pw.println();
		}
		pw.close();
	}

	public static void processLine(String line) throws FileNotFoundException, UnsupportedEncodingException {
		StringTokenizer st = new StringTokenizer(line,"\\{|\\}");
		while(st.hasMoreElements()) {
			String stringToAdd = st.nextToken();
			if(stringToAdd.contains("[")) {
				storage.add(new Vector<String>());
				storage.add(new Vector<String>());
				query++;
				mainField = 0;
				continue;
			}
			if(stringToAdd.contains("]")) {
				break;
			}
			StringTokenizer stringTokenByQuotes = new StringTokenizer(stringToAdd, "\"");
			while(stringTokenByQuotes.hasMoreElements()) {
				String stringToken = stringTokenByQuotes.nextToken();
				
				StringTokenizer stringTokenByComma = new StringTokenizer(stringToken, ",");
				if(!stringTokenByComma.hasMoreElements()) {continue;}
				stringToken = stringTokenByComma.nextToken();
		
				if(stringToken.contains(":")) {
					stringToken = stringToken.substring(stringToken.indexOf(':')+1);
				}

				while(stringToken.startsWith(" ")) stringToken = stringToken.substring(1);
				if(stringToken.length() == 0) {
					continue;
				}
				if(mainField != 0) {
					storage.get(mainField).add(stringToken);
					mainField = 0;
				} else {
					if(storage.get(0).indexOf(stringToken) == 0) {
						query++;
						mainField = query;
						storage.add(new Vector<String>());
						continue;
					}
					if(storage.get(0).contains(stringToken)) {
						mainField = query;
						continue;
					}
					storage.get(0).add(stringToken);
					mainField = query;
				}
			}
		}
		printCSVinFile();
	}

	public static void main(String[] args) throws IOException {
		Main tester = new Main();
		readFromInternFile();
	}
}