Mai intai trebuie sa te autentifici.

Cod sursa(job #1355919)

Utilizator petru_ch94Petru C petru_ch94 Data 23 februarie 2015 01:02:13
Problema Convertor Scor 60
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.6 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.StringTokenizer;

class Main {
	private static int mainField = 0;
	private static int query = 0;
	private static String mainFields = "";
	private static String dataFields = "";

	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");
		
		pw.println(mainFields);
		pw.print(dataFields);
		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("[")) {
				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) {
					dataFields += stringToken + ",";
					mainField = 0;
				} else {
					if(mainFields.startsWith(stringToken)) {
						query++;
						mainField = query;
						dataFields += "\n";
						continue;
					}
					if(mainFields.contains(stringToken)) {
						mainField = query;
						continue;
					}
					mainFields += stringToken + ",";
					mainField = query;
				}
			}
		}
	}

	public static void main(String[] args) throws IOException {
		readFromInternFile();
		printCSVinFile();
	}
}