Pagini recente » Cod sursa (job #71430) | Cod sursa (job #1905921) | Cod sursa (job #1083358) | Cod sursa (job #27667) | Cod sursa (job #1345080)
/*
* Realizat pentru inscrierea la CDL
* Nan Mihai - Facultatea de Automatica si Calculatoare
* Grupa - 324CC
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.Vector;
/**
*
* @author Nan Mihai
*/
public class Main {
private String name;
private HashMap<String, Vector<String>> dictionar;
public Main() {
dictionar = new HashMap<String, Vector<String>>();
}
public static void main(String args[]) throws FileNotFoundException {
Main c = new Main();
c.read("convertor.in");
c.write("convertor.out");
}
public void read(String namefile) throws FileNotFoundException {
Scanner reader = new Scanner(new FileInputStream(namefile));
String text = "";
String line, key, value;
while(reader.hasNext()) {
line = reader.nextLine();
text += line;
}
StringTokenizer st = new StringTokenizer(text, ":");
Vector<String> lines = new Vector<String>();
while(st.hasMoreTokens()) {
String aux = st.nextToken();
lines.add(aux);
}
for(String aux : lines) {
key = getKey(aux);
int index = lines.indexOf(aux);
String next = "";
if(index < lines.size() - 1) {
next = lines.elementAt(index+1);
}
value = getValue(next);
if(!key.equals("") && !value.equals("")) {
if(dictionar.containsKey(key)) {
Vector<String> v = dictionar.get(key);
v.add(value);
} else {
Vector<String> v = new Vector<String>();
v.add(value);
dictionar.put(key, v);
}
}
}
reader.close();
}
public String getKey(String s) {
String key = "";
String pref = "";
char c = '"';
pref += c;
if(s.startsWith("[ { ")) {
StringTokenizer st = new StringTokenizer(s, pref);
String aux = st.nextToken();
key = st.nextToken();
} else if(s.contains(",")) {
StringTokenizer st = new StringTokenizer(s, ",");
String aux = st.nextToken();
aux = st.nextToken();
st = new StringTokenizer(aux, pref);
aux = st.nextToken();
key = st.nextToken();
}
return key;
}
public String getValue(String s) {
String value = "";
if(!s.equals("")) {
int i = 0;
char ch;
ch = s.charAt(0);
while(ch == ' ') {
i++;
ch = s.charAt(i);
}
char c = s.charAt(i);
if(c == '"') {
String prefix = "";
prefix += c;
StringTokenizer st = new StringTokenizer(s, prefix);
String aux = st.nextToken();
value = st.nextToken();
} else {
StringTokenizer st = new StringTokenizer(s, " ,");
value = st.nextToken();
}
}
return value;
}
public void write(String namefile) throws FileNotFoundException {
PrintWriter writer = new PrintWriter(namefile);
Collection<Vector<String>> vect_values = new ArrayList<Vector<String>>();
Set<String> keys = dictionar.keySet();
vect_values = dictionar.values();
int i = 0, j = 0, nr = 0;
for(String key : keys) {
writer.write(key + ",");
}
writer.write("\n");
Iterator itr = vect_values.iterator();
if(itr.hasNext()) {
Vector<String> values = (Vector<String>) itr.next();
nr = values.size();
}
itr = vect_values.iterator();
for(int k = 0; k < nr; k++) {
for(i = 0; i <= keys.size(); i++) {
j = 0;
for(Vector<String> vect : vect_values) {
j++;
if(j == i) {
String value = vect.elementAt(k);
writer.write(value + ",");
}
}
}
if(k != nr - 1)
writer.write("\n");
}
writer.close();
}
}