Cod sursa(job #1361900)

Utilizator Simona_RoboiuRoboiu Simona Alina Simona_Roboiu Data 26 februarie 2015 01:06:43
Problema Convertor Scor 50
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.12 kb
/* Roboiu Simona Alina */

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
	int k = 0;
	ArrayList<String> key = null;
	ArrayList<String> value = null;
	String seq = null;
	
	public static void main(String args[]) {
		Main c = new Main();
		
		String input = "convertor.in";
		c.readDataFromInputFile(input);
		
		String output = "convertor.out";
		c.writeData(output);
	}
	
	public void readDataFromInputFile(String filename) {
		Scanner scanner = null;
		String line = null;
		key = new ArrayList<String>();
		value = new ArrayList<String>();
		seq = new String();
		
		try {		
			scanner = new Scanner(new FileInputStream(filename));
			
			while(scanner.hasNextLine()) {
				line = new String(scanner.nextLine());
				conversionLine(line);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		scanner.close();
	}
	
	public void conversionLine(String line) {
		String delimiters = ",{}[]";
		line = line.replace("\"", "");
		
		if(!line.contains("}")) {
			seq = seq.concat(line);
			return;
		}
		
		seq = seq.concat((line.split("}"))[0]) + "}";
		StringTokenizer token = new StringTokenizer(seq, delimiters);
		while(token.hasMoreTokens()) {
			String pair = token.nextToken();
			if(pair.trim().equals(""))
				continue;
			String[] words = pair.trim().split(":");
			if(k == 0)
				key.add(words[0].trim());
			value.add(words[1].trim());
		}
		
		if (k == 0) {
			k = 1;
		}
		seq = new String(line.split("}")[1]);
	}
	
	public void writeData(String filename) {
		FileWriter f = null;
		PrintWriter file = null;

		try {

			f = new FileWriter(filename);
			file = new PrintWriter(f);
			
			int nr = key.size();
			
			for(int i = 0; i < nr; i++)
				file.print(key.get(i)+",");
			file.println();
			
			for(int i = 0; i < value.size(); i++) {
				file.print(value.get(i)+",");
				if((i + 1) % nr == 0)
					file.println();
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		file.close();
	}
}