Cod sursa(job #1361910)

Utilizator Simona_RoboiuRoboiu Simona Alina Simona_Roboiu Data 26 februarie 2015 01:24:36
Problema Convertor Scor 50
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.2 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;
	String key = null;
	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 String();
		value = new 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;
		}
		String[] half = line.split("}");
		seq = seq.concat(half[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 = key.concat(words[0].trim() + ",");
			value = value.concat(words[1].trim() + ",");
		}
		value = value.concat("\n");
		if (k == 0) {
			k = 1;
		}
		seq = new String(half[1]);
	}
	
	public void writeData(String filename) {
		FileWriter f = null;
		PrintWriter file = null;

		try {

			f = new FileWriter(filename);
			file = new PrintWriter(f);
			
			file.println(key);
			file.print(value);
			
			/*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();
	}
}