package org.softlang.company.features; import java.io.File; import java.io.FileWriter; import java.io.IOException; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; public class Cut { /** * Cut all salaries of the company in file input and write it to file output * * @param input * @param output */ public static void cut(File input, File output) { JsonFactory factory = new JsonFactory(); JsonParser parser; JsonGenerator generator; output.getParentFile().mkdirs(); try { parser = factory.createParser(input); generator = factory.createGenerator(new FileWriter(output)); generator.useDefaultPrettyPrinter(); generator.enable(JsonGenerator.Feature.AUTO_CLOSE_TARGET); for (JsonToken token = parser.nextToken(); token != null; token = parser .nextToken()) { if (token == JsonToken.VALUE_NUMBER_FLOAT) { if (parser.getCurrentName().equals("salary")) generator.writeNumber(parser.getDoubleValue() / 2); } else { generator.copyCurrentEvent(parser); // generator.copyCurrentStructure(parser); } } parser.close(); generator.flush(); generator.close(); } catch (JsonParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * Cut all salaries of the company in file f and write it back to f * * @param input * @param output */ public static void cut(File f) { JsonFactory factory = new JsonFactory(); JsonParser parser; JsonGenerator generator; f.getParentFile().mkdirs(); try { parser = factory.createParser(f); generator = factory.createGenerator(new FileWriter(f)); generator.useDefaultPrettyPrinter(); generator.enable(JsonGenerator.Feature.AUTO_CLOSE_TARGET); for (JsonToken token = parser.nextToken(); token != null; token = parser .nextToken()) { if (token == JsonToken.VALUE_NUMBER_FLOAT) { if (parser.getCurrentName().equals("salary")) generator.writeNumber(parser.getDoubleValue() / 2); } else { generator.copyCurrentEvent(parser); // generator.copyCurrentStructure(parser); } } parser.close(); generator.flush(); generator.close(); } catch (JsonParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }