Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package controllers; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import data.entity.CarOptionValue; import data.entity.CarProperty; import data.entity.Color; import data.entity.ColorGroup; import data.entity.Feature; import data.entity.PropertyName; import data.entity.SubModel; import data.services.CarColorValueService; import data.services.CarCompletionGroupService; import data.services.CarCompletionOptionService; import data.services.CarPropertyGroupService; import data.services.CarPropertyService; import data.services.CarService; import data.services.ColorGroupService; import data.services.ColorService; import data.services.FeatureService; import data.services.MarkService; import data.services.ModelService; import data.services.PropertyNameService; import data.services.SubModelService; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import support.StringAdapter; /** * * @author bezdatiuzer */ @Controller @RequestMapping("/ParseController") public class ParseController { @Autowired private ColorGroupService colorGroupService; @Autowired private ColorService colorService; @Autowired private FeatureService featureService; @Autowired private MarkService markService; @Autowired private ModelService modelService; @Autowired private CarCompletionGroupService carCompletionGroupService; @Autowired private CarCompletionOptionService carCompletionOptionService; @Autowired private CarPropertyGroupService carPropertyGroupService; @Autowired private CarPropertyService carPropertyService; @Autowired private CarService carService; @Autowired private PropertyNameService propertyNameService; @Autowired private CarColorValueService carColorValueService; @Autowired private SubModelService subModelService; /*@Autowired private ParseController parseController;*/ @RequestMapping("/show") public String showParseForm(Map<String, Object> model) throws Exception { File file = new File("/usr/local/etc/newFile"); if (file.exists()) { ArrayList<String> keys = new ArrayList(); //FileReader flr = new FileReader(file); InputStream is = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(is, "UTF-8"); JsonReader reader = new JsonReader(isr); try { int col = 0; int numbern = 1; BufferedReader br = new BufferedReader(new FileReader(file)); /*br.skip(160584580); for(int i=0;i<100000;i++){ keys.add(br.readLine()); }*/ reader.beginObject(); while (reader.hasNext()) { String objectName = reader.nextName(); keys.add("Mainobj - " + objectName); //if(objectName.equals("color_groups")||objectName.equals("colors")||objectName.equals("features")||objectName.equals("constants")){ if (objectName.equals("color_groups")) { reader.skipValue(); } /*else if(objectName.equals("car_property_groups")){ reader.beginArray(); while(reader.hasNext()){ reader.beginObject(); CarPropertyGroup newCPG = new CarPropertyGroup(); Long cpgOldId = null; List<CarProperty> propList = new ArrayList(); while(reader.hasNext()){ String carPropertyGroupParamName = reader.nextName(); switch (carPropertyGroupParamName){ case "id": cpgOldId = reader.nextLong(); newCPG.setOldId(cpgOldId); break; case "parent_id": newCPG.setParentId(reader.nextLong()); break; case "title": newCPG.setTitle(reader.nextString()); break; case "sort": newCPG.setSort(reader.nextLong()); break; case "is_hidden": switch (reader.nextInt()){ case 0: newCPG.setIsHidden(false); break; case 1: newCPG.setIsHidden(true); break; default : newCPG.setIsHidden(null); break; } break; case "is_publish": newCPG.setIsPublish(reader.nextBoolean()); break; case "car_properties": reader.beginArray(); while (reader.hasNext()) { CarProperty cp = new CarProperty(); reader.beginObject(); while (reader.hasNext()) { String cpParamName = reader.nextName(); switch (cpParamName) { case "id": cp.setOldId(reader.nextLong()); break; case "title": cp.setTitle(reader.nextString()); break; case "sort": cp.setSort(reader.nextLong()); break; case "unit": cp.setUnit(reader.nextString()); break; case "type": cp.setType(reader.nextString()); break; case "key": cp.setCpKey(reader.nextString()); break; } } cp.setCPG(newCPG); reader.endObject(); propList.add(cp); } reader.endArray(); } } reader.endObject(); //newCPG.setCPs(propList); //+savecpg carPropertyGroupService.create(newCPG); for(CarProperty ncp:propList){ ncp.setCPG(carPropertyGroupService.findByOldId(cpgOldId)); carPropertyService.create(ncp); } } reader.endArray(); }*//* else if (objectName.equals("car_completion_groups")) { reader.beginArray(); //1 group while (reader.hasNext()) { reader.beginObject(); Long ccgId = null; Long ccgPId = null; String ccgTitle = ""; Long ccgSort = null; Boolean ccgIsHidden = null; Boolean ccgIsOptionReq = null; Boolean ccgIsPublish = null; while (reader.hasNext()) { String ccgParamName = reader.nextName(); switch (ccgParamName) { case "id": ccgId = reader.nextLong(); break; case "parent_id": ccgPId = reader.nextLong(); break; case "title": ccgTitle = reader.nextString(); break; case "sort": ccgSort = reader.nextLong(); break; case "is_hidden": ccgIsHidden = reader.nextBoolean(); break; case "is_option_require": ccgIsOptionReq = reader.nextBoolean(); break; case "is_publish": ccgIsPublish = reader.nextBoolean(); break; case "car_completion_options": reader.beginArray(); while (reader.hasNext()) { CarCompletionOption cco = new CarCompletionOption(); reader.beginObject(); while (reader.hasNext()) { String ccoParamName = reader.nextName(); switch (ccoParamName) { case "id": cco.setOldId(reader.nextLong()); break; case "title": cco.setTitle(reader.nextString()); break; case "sort": cco.setSort(reader.nextLong()); break; case "key": cco.setCcoKey(reader.nextString()); break; case "title_full": cco.setTitleFull(reader.nextString()); break; } } reader.endObject(); cco.setCCG(carCompletionGroupService.findByOldId(ccgId)); carCompletionOptionService.createParam(cco); } reader.endArray(); break; } } CarCompletionGroup ccg = new CarCompletionGroup(); ccg.setOldId(ccgId); ccg.setIsHidden(ccgIsHidden); ccg.setIsOptReq(ccgIsOptionReq); ccg.setIsPublish(ccgIsPublish); ccg.setParentId(ccgPId); ccg.setSort(ccgSort); ccg.setTitle(ccgTitle); //save carCompletionGroupService.create(ccg); reader.endObject(); } reader.endArray(); }*/ else if (objectName.equals("never"/*"cars"*/)) { reader.beginArray(); while (reader.hasNext()) { //keys.add("--{"); reader.beginObject(); Long markquto = null; String markpop = ""; String marktitle = ""; String markrus = ""; String markdesc = ""; while (reader.hasNext()) { String keyName = reader.nextName(); /*if (keyName.equals("title")) { //keys.add("title: " + reader.nextString()); marktitle = reader.nextString(); } else if (keyName.equals("title_rus")) { //keys.add("rus: " + reader.nextString()); markrus = reader.nextString(); } else if (keyName.equals("quto_id")) { //keys.add("id: " + reader.nextInt()); markquto = reader.nextLong(); } else if (keyName.equals("description")) { //keys.add("desc: " + reader.nextString()); markdesc = reader.nextString(); } else if (keyName.equals("is_popular")) { //keys.add("pop: " + reader.nextString()); markpop = reader.nextString(); } else*/ if (keyName.equals("car_models")) { //reader.skipValue(); reader.beginArray(); while (reader.hasNext()) { Long qutoMod = null; String popMod = ""; String titleMod = ""; String rusMod = ""; //if (reader.peek().equals(JsonToken.BEGIN_OBJECT)) { reader.beginObject(); while (reader.hasNext()) { //if (reader.peek().equals(JsonToken.NAME)) { String CarModelParamName = reader.nextName(); /*if (CarModelParamName.equals("title")) { //keys.add("title: " + reader.nextString()); titleMod = reader.nextString(); } else if (CarModelParamName.equals("title_rus")) { //keys.add("rus: " + reader.nextString()); rusMod = reader.nextString(); } else */ if (CarModelParamName.equals("quto_id")) { //keys.add("id: " + reader.nextInt()); qutoMod = reader.nextLong(); } /*else if (CarModelParamName.equals("is_popular")) { //keys.add("desc: " + reader.nextString()); popMod = reader.nextString(); }*/ else if (CarModelParamName.equals("car_model_subs")) { reader.skipValue(); /*reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); SubModel sm = new SubModel(); Long smquto_id = null; String url = ""; String smtitle = null; String smtype = ""; String smclass = ""; String smbody = ""; Integer doorsCount = null; keys.add("obj["); while (reader.hasNext()){ String carModelSubParam = reader.nextName(); if(carModelSubParam.equals("quto_id")){ smquto_id = reader.nextLong(); }else if(carModelSubParam.equals("url")){ url=reader.nextString(); }else if(carModelSubParam.equals("title")){ smtitle=reader.nextString(); }else if(carModelSubParam.equals("type")){ smtype=reader.nextString(); }else if(carModelSubParam.equals("class")){ smclass=reader.nextString(); }else if(carModelSubParam.equals("body")){ smbody=reader.nextString(); }else if(carModelSubParam.equals("doors_count")){ doorsCount = reader.nextInt(); }else{ reader.skipValue(); } } sm.setBody(smbody); sm.setCarClass(smclass); sm.setDoorsCount(doorsCount); sm.setQutoModelSubId(smquto_id); sm.setTitle(smtitle); sm.setType(smtype); sm.setUrl(url); keys.add(numbern+" url="+url+"; body="+smbody+"; class="+smclass+"; doors="+doorsCount+"; id="+smquto_id+"; title="+smtitle+"; type="+smtype+";"); keys.add("]"); subModelService.create(sm); reader.endObject(); } reader.endArray();*/ } else if (CarModelParamName .equals("never"/*"car_model_sub_generations"*/)) { reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); Long qcmsgId = null; Long qcmsId = null; Long qcmgId = null; Boolean qisNew = null; Double cmsgprice = null; //List<CarColorValue> ccvList = new ArrayList(); while (reader.hasNext()) { String carModelSubGenParam = reader.nextName(); if (carModelSubGenParam.equals("quto_id")) { qcmsgId = reader.nextLong(); } else if (carModelSubGenParam .equals("quto_car_model_sub_id")) { qcmsId = reader.nextLong(); } else if (carModelSubGenParam .equals("quto_car_model_generation_id")) { qcmgId = reader.nextLong(); } else if (carModelSubGenParam.equals("price_min")) { cmsgprice = reader.nextDouble(); } else if (carModelSubGenParam.equals("is_new")) { Integer supInt = reader.nextInt(); if (supInt == 0) { qisNew = false; } else if (supInt == 1) { qisNew = true; } } else if (carModelSubGenParam.equals("colors")) { reader.skipValue(); /*reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); //CarColorValue ccv = new CarColorValue(); String ColId = ""; String ColgId = ""; String colName = ""; String colSort = ""; while (reader.hasNext()) { String colorParamName = reader.nextName(); switch (colorParamName){ case "car_color_id": ColId = reader.nextString(); //keys.add(colorParamName+" = "+ColId); //reader.skipValue(); break; case "car_color_group_id": ColgId = reader.nextString(); //keys.add(colorParamName+" = "+ColgId); //reader.skipValue(); break; case "title": colName = reader.nextString(); //keys.add(colorParamName+" = "+colName); //reader.skipValue(); break; case "sort": colSort = reader.nextString(); //keys.add(colorParamName+" = "+colSort); //reader.skipValue(); break; default: col++; keys.add("skippedColorP+"+reader.peek().name()); reader.skipValue(); break; } } reader.endObject(); ccv.setTitle(colName); ccv.setColor(colorService.findByOldId(Long.valueOf(ColId))); ccv.setColorGroup(colorGroupService.findByOldId(Long.valueOf(ColgId))); ccvList.add(ccv); //reader.skipValue(); } reader.endArray();*/ } else if (carModelSubGenParam.equals("media")) { reader.skipValue(); } else if (carModelSubGenParam.equals("car_completions")) { reader.skipValue(); /*reader.beginArray(); while (reader.hasNext()) { //keys.add(carModelSubGenParam+" - "+reader.peek().name()); reader.beginObject(); while (reader.hasNext()) { String keyname = reader.nextName(); String token = ""; if (reader.peek().equals(JsonToken.BEGIN_ARRAY)) { token = "array"; reader.skipValue(); } else if (reader.peek().equals(JsonToken.BEGIN_OBJECT)) { token = "object"; reader.skipValue(); } else if (reader.peek().equals(JsonToken.NUMBER)) { token = StringAdapter.getString(reader.nextLong()); } else { token = reader.nextString(); } keys.add("n: " + keyname + " - " + token); //keys.add("ccname: "+reader.peek().name()); //reader.skipValue(); } reader.endObject(); //reader.skipValue(); } reader.endArray();**/ } else if (carModelSubGenParam .equals("car_modifications")) { reader.beginArray(); while (reader.hasNext()) { //keys.add(carModelSubGenParam+" - "+reader.peek().name()); String carTitle = ""; Long cmqId = null; Long completionOldId = null; Double cmPrice = null; boolean archive = false; Boolean is_new = qisNew; Long cmgqId = qcmsId; Long cmsqId = qcmgId; Long cmsgqId = qcmsgId; Double cmsgPrice = cmsgprice; //Model carMod = modelService.findByOldId(qutoMod); List<PropertyName> propertyNames = new ArrayList(); ArrayList<Feature> features = new ArrayList(); ArrayList<CarOptionValue> carOptionValues = new ArrayList(); //keys.add("--" + titleMod); reader.beginObject(); while (reader.hasNext()) { /*if(reader.peek().equals(JsonToken.BEGIN_ARRAY)){ reader.beginArray(); while (reader.hasNext()) { if(reader.peek().equals(JsonToken.BEGIN_OBJECT)){ reader.beginObject(); keys.add("object:"); while(reader.hasNext()){ if(reader.peek().equals(JsonToken.NAME)){ keys.add("name: "+reader.nextName()); }else{ keys.add("other: "+reader.peek().name()); reader.skipValue(); } //String keyname = reader.peek().name(); //keys.add("kn"+keyname); } reader.endObject(); } //reader.skipValue(); } reader.endArray(); }else{*/ //reader.skipValue(); /*if(reader.peek().equals(JsonToken.BEGIN_ARRAY)){ reader.beginArray(); }else if(reader.peek().equals(JsonToken.END_ARRAY)){ reader.endArray(); }else if(reader.peek().equals(JsonToken.BEGIN_OBJECT)){ reader.beginObject(); }else if(reader.peek().equals(JsonToken.END_OBJECT)){ reader.endObject(); }else{*/ String carParamName = reader.nextName(); switch (carParamName) { case "quto_id": cmqId = reader.nextLong(); break; case "title": carTitle = reader.nextString(); keys.add(carTitle); break; case "completion_id": completionOldId = reader.nextLong(); break; case "price_min": cmPrice = reader.nextDouble(); break; case "is_archive": archive = reader.nextBoolean(); break; case "features": reader.skipValue(); /*reader.beginArray(); while(reader.hasNext()){ if(reader.peek().equals(JsonToken.STRING)){ Long num = Long.valueOf(reader.nextString()); Feature f = featureService.findByOldId(num); features.add(f); }else{ reader.skipValue(); } } reader.endArray();*/ break; case "car_completion_options": reader.skipValue(); /*if (archive) { reader.skipValue(); } else { //List<CarOptionValue> ccoList = new ArrayList(); //reader.skipValue(); reader.beginArray(); while (reader.hasNext()) { if (reader.peek().equals(JsonToken.BEGIN_OBJECT)) { reader.beginObject(); CarOptionValue cov = new CarOptionValue(); Long ccoOldId = null; while (reader.hasNext()) { if (reader.peek().equals(JsonToken.NAME)) { String ccoKey = reader.nextName(); switch (ccoKey) { case "id": cov.setOldId(reader.nextLong()); break; case "car_completion_option_id": ccoOldId = reader.nextLong(); cov.setCcoOldId(ccoOldId); break; case "title": if(reader.peek().equals(JsonToken.NULL)){ cov.setTitle(" ?"); reader.skipValue(); }else if (reader.peek().equals(JsonToken.STRING)) { String name = reader.nextString(); if(name.equals("")||name.equals("null")||name.equals("NULL")){ cov.setTitle(" ?"); }else{ cov.setTitle(name); } //keys.add("title == " + reader.nextString()); } else { keys.add("title == " + reader.peek().name()); cov.setTitle(" ?"); reader.skipValue(); } break; case "description": if (reader.peek().equals(JsonToken.STRING)) { cov.setDescription(reader.nextString()); } else { reader.skipValue(); } break; case "sort": cov.setSort(reader.nextLong()); break; case "price": if (reader.peek().equals(JsonToken.NUMBER)) { keys.add(cov.getTitle()+" -- " + reader.nextDouble() + " -num-"); cov.setPrice(reader.nextDouble()); }else if(reader.peek().equals(JsonToken.STRING)){ String stri = reader.nextString(); keys.add(cov.getTitle()+" -- " + StringAdapter.toDouble(stri) + " -str-"); cov.setPrice(StringAdapter.toDouble(stri)); }else { keys.add("priceclass = -- " + reader.peek().name()); cov.setPrice(Double.valueOf("0")); reader.skipValue(); } break; case "is_package": Integer packKey = reader.nextInt(); if (packKey == 0) { cov.setIsPack(false); } else if (packKey == 1) { cov.setIsPack(true); } else { reader.skipValue(); } break; default: reader.skipValue(); break; } }else{ //keys.add("nename --- " + reader.peek().name()); reader.skipValue(); } } cov.setCCO(carCompletionOptionService.findByOldId(ccoOldId)); cov.setCar(carService.findByOldId(cmqId)); //model.put("error", carService.findByOldId(cmqId)); model.put("error", carService.getResult().getErrors()); //keys.add(cov.getTitle()); carService.create(cov); reader.endObject(); } else{ //keys.add("-+-"+reader.peek().name()); reader.skipValue(); } } reader.endArray(); }*/ break; case "car_properties": //reader.skipValue(); if (!archive) { reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); PropertyName pn = new PropertyName(); /*Long pnId = Long.valueOf(0); String pnVal = "";*/ while (reader.hasNext()) { String propKey = reader .nextName(); switch (propKey) { case "id": CarProperty cp = carPropertyService .findByOldId(reader .nextLong()); pn.setCarProperty(cp); /*if(cp.getRadical()!=null){ pn.setRadical(cp.getRadical()); }*/ break; case "value": pn.setPropertyNameValue( reader.nextString()); break; default: reader.skipValue(); break; } //propertyNames.add(pn); } pn.setCar(carService .findByOldId(cmqId)); keys.add(pn.getCar().getTitle() + " - " + pn.getCarProperty() .getTitle() + " - " + pn.getPropertyNameValue() + "-" + pn.getRadical()); //propertyNameService.create(pn); reader.endObject(); } reader.endArray(); } else { reader.skipValue(); } break; default: reader.skipValue(); break; } //} } /*if(!archive&&(cmPrice!=Double.valueOf(0)||cmsgPrice!=Double.valueOf(0))){ Car newCar = new Car(); keys.add("------------------"); keys.add("cmPrice="+cmPrice); keys.add("cmgqId="+cmgqId); keys.add("cmqId="+cmqId); keys.add("cmsgPrice="+cmsgPrice); keys.add("cmsgqId="+cmsgqId); keys.add("cmsqId="+cmsqId); keys.add("completionOldId="+completionOldId); keys.add("qisNew="+is_new); keys.add("carTitle="+carTitle); keys.add("carMod="+carMod.getTitle()); keys.add("features:"); for(Feature f:features){ keys.add(f.getTitle()); } keys.add("props:"); newCar.setCmPrice(cmPrice); newCar.setCmgqId(cmgqId); newCar.setCmqId(cmqId); newCar.setCmsgPrice(cmsgPrice); newCar.setCmsgqId(cmsgqId); newCar.setCmsqId(cmsqId); newCar.setCompletionOldId(completionOldId); newCar.setIsNew(is_new); newCar.setTitle(carTitle); newCar.setModel(carMod); carService.create(newCar); if(!features.isEmpty()){ carService.updateFeaturesInCar(features, cmqId); } }*/ /*if (!propertyNames.isEmpty()) { carService.updatePropertiesInCar(propertyNames, cmqId); }*/ reader.endObject(); /*if(!archive){ for(CarColorValue c:ccvList){ Car car = carService.findByOldId(cmqId); c.setCar(car); keys.add("car="+car.getTitle()); keys.add("t="+c.getTitle()); keys.add("c="+c.getColorGroup().getTitle()); keys.add("cg="+c.getColor().getTitle()); carColorValueService.create(c); } }*/ } reader.endArray(); } else { reader.skipValue(); } } reader.endObject(); } reader.endArray(); } /* elseif (CarModelParamName.equals("car_model_generations")) { keys.add("---cmg---"); reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); while (reader.hasNext()) { keys.add("name: " + reader.nextName()); reader.skipValue(); } reader.endObject(); } reader.endArray(); } else if (CarModelParamName.equals("car_model_sub_generations")) { keys.add("---cmsg---"); reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); while (reader.hasNext()) { keys.add("name: " + reader.nextName()); reader.skipValue(); } reader.endObject(); } reader.endArray(); } */ else { reader.skipValue(); } /*} else { keys.add("---NotName"); reader.skipValue(); }*/ } /*keys.add("id: " + qutoMod); keys.add("pop: " + popMod); keys.add("title: " + titleMod); keys.add("rus " + rusMod); Model mod = new Model(); mod.setMark(markService.getExistedMark(quto)); mod.setPop(popMod); mod.setQutoId(qutoMod); mod.setTitle(titleMod); mod.setTitleRus(rusMod); modelService.create(mod);*/ reader.endObject(); /*} else { keys.add("-ElseName"); reader.skipValue(); }*/ } reader.endArray(); } else { reader.skipValue(); } /*keys.add("--name: " + keyName); if (reader.peek().equals(JsonToken.STRING)) { keys.add(reader.nextString()); } else if (reader.peek().equals(JsonToken.BEGIN_ARRAY)) { //reader.beginArray(); reader.skipValue(); keys.add("--:[array]"); //reader.endArray(); } else if (reader.peek().equals(JsonToken.BEGIN_OBJECT)) { //reader.beginObject(); reader.skipValue(); keys.add("--:{object}"); //reader.beginObject(); } else if(reader.peek().equals(JsonToken.NULL)){ reader.skipValue(); keys.add("--:null"); } else if(reader.peek().equals(JsonToken.NUMBER)){ //reader.skipValue(); keys.add("--:number"+reader.nextInt()); } else if(reader.peek().equals(JsonToken.NAME)){ reader.skipValue(); keys.add("--:name"); }else { keys.add("---smthwrong"); reader.skipValue(); }*/ } /*Mark m = new Mark(); m.setQutoId(quto); m.setDescription(desc); m.setPop(pop); m.setTitle(title); m.setTitleRus(rus); markService.create(m);*/ /*keys.add("id: " + quto); keys.add("desc: " + desc); keys.add("pop: " + pop); keys.add("title: " + title); keys.add("rus " + rus);*/ reader.endObject(); //keys.add("--}"); /*if (reader.peek().equals(JsonToken.NAME)) { String keyName = reader.nextName(); keys.add("--name: " + keyName); reader.skipValue(); }else if(reader.peek().equals(JsonToken.BEGIN_OBJECT)){ keys.add("--someObj"); reader.beginObject(); while (reader.hasNext()) { if(reader.peek().equals(JsonToken.NAME)){ keys.add(reader.nextName()); if(reader.peek().equals(JsonToken.BEGIN_ARRAY)){ keys.add("---[Array]"); }else if(reader.peek().equals(JsonToken.STRING)){ keys.add("---"+reader.nextString()); }else{ keys.add("---notStringNontArr"); reader.skipValue(); } reader.skipValue(); }else{ keys.add("not a name"); reader.skipValue(); } } reader.endObject(); }else{ keys.add("notName¬Obj"); reader.skipValue(); }*/ } reader.endArray(); //keys.add("-}"); /* } else { keys.add("--notOnj¬Arr"); reader.skipValue(); }*/ } else { reader.skipValue(); } } reader.endObject(); for (String err : carService.getResult().getErrors()) { keys.add(err); } //keys.add("col="+StringAdapter.getString(col)); model.put("keys", keys); reader.close(); } catch (Exception e) { model.put("error", "? ? :" + StringAdapter.getStackTraceException(e)); reader.close(); return "ParseShow"; } } /*File file = new File("/usr/local/etc/newFile"); if (file.exists()) { ArrayList<String> keys = new ArrayList(); JsonReader reader = new JsonReader(new FileReader(file)); try { reader.beginObject(); while (reader.hasNext()) { String objectName = reader.nextName(); if (objectName.equals("colors")) { reader.beginObject(); while (reader.hasNext()) { String colorNameId = reader.nextName(); reader.beginObject(); Long oldColorId = Long.valueOf("0"); String title = "0"; String titleEng = "0"; while (reader.hasNext()) { String objectField = reader.nextName(); if (objectField.equals("id")) { oldColorId = reader.nextLong(); } if (objectField.equals("title")) { title = reader.nextString(); } if (objectField.equals("title_eng")) { titleEng = reader.nextString(); } if (objectField.equals("aliases")) { String oldId = ""; String name = ""; if (reader.peek().equals(JsonToken.BEGIN_ARRAY)) { reader.beginArray(); reader.endArray(); oldId = "0"; name = "? "; Color c = new Color(); c.setName(name); c.setTitle(title); c.setTitleEng(titleEng); c.setOldGroupId(oldColorId); c.setOldId(Long.valueOf(oldId)); colorService.createColor(c); //keys.add(oldColorId + " - " + title + " - " + titleEng + " - " + oldId + " - " + name); } else { reader.beginObject(); while (reader.hasNext()) { oldId = reader.nextName(); name = reader.nextString(); Color c = new Color(); c.setName(name); c.setTitle(title); c.setTitleEng(titleEng); c.setOldGroupId(oldColorId); c.setOldId(Long.valueOf(oldId)); colorService.createColor(c); //keys.add(oldColorId + " - " + title + " - " + titleEng + " - " + oldId + " - " + name); } reader.endObject(); } } } reader.endObject(); } reader.endObject(); } else if (objectName.equals("color_groups")) { reader.beginObject(); while (reader.hasNext()) { String colorGroupNameId = reader.nextName(); reader.beginObject(); Long oldGroupId = Long.valueOf("0"); String title = ""; while (reader.hasNext()) { String objectField = reader.nextName(); if (objectField.equals("id")) { oldGroupId = reader.nextLong(); } else if (objectField.equals("title")) { title = reader.nextString(); } else if (objectField.equals("aliases")) { reader.beginObject(); while (reader.hasNext()) { String oldId = reader.nextName(); String name = reader.nextString(); ColorGroup cg = new ColorGroup(); cg.setName(name); cg.setTitle(title); cg.setOldGroupId(oldGroupId); cg.setOldId(Long.valueOf(oldId)); colorGroupService.createColorGroup(cg); //keys.add(oldGroupId + " - " + title + " - " + oldId + " - " + name); } reader.endObject(); } } reader.endObject(); } reader.endObject(); //keys.add(name); } else if (objectName.equals("features")) { reader.beginObject(); while (reader.hasNext()) { String featureNameId = reader.nextName(); reader.beginObject(); Long featureId = Long.valueOf("0"); String title = ""; String description = ""; Long cmgId = null; Long ccoId = null; String media = ""; while (reader.hasNext()) { String objectField = reader.nextName(); if (objectField.equals("id")) { featureId = reader.nextLong(); } else if (objectField.equals("title")) { title = reader.nextString(); } else if (objectField.equals("description")) { description = reader.nextString(); } else if (objectField.equals("car_model_generation_id")) { if (!reader.peek().equals(JsonToken.NULL)) { cmgId = reader.nextLong(); } else { reader.skipValue(); } } else if (objectField.equals("car_completion_option_id")) { if (!reader.peek().equals(JsonToken.NULL)) { ccoId = reader.nextLong(); } else { reader.skipValue(); } } else if (objectField.equals("media")) { //reader.skipValue(); if (reader.peek().equals(JsonToken.BEGIN_OBJECT)) { reader.beginObject(); while (reader.hasNext()) { if (reader.peek().equals(JsonToken.NAME)) { String mediaName = reader.nextName(); media += mediaName + " : [ "; reader.beginArray(); while (reader.hasNext()) { media += " { "; reader.beginObject(); while (reader.hasNext()) { String mediaParamName = reader.nextName(); media += mediaParamName + " : "; if (!mediaParamName.equals("url")) { if (!reader.peek().equals(JsonToken.NULL)) { media += reader.nextString(); } else { reader.skipValue(); media += "null"; } } else { reader.beginObject(); media += "{"; while (reader.hasNext()) { media += reader.nextName() + " : " + reader.nextString(); } media += "}"; reader.endObject(); } } reader.endObject(); media += " } "; } reader.endArray(); media += " ] "; } } reader.endObject(); } else { reader.skipValue(); } } } reader.endObject(); Feature f = new Feature(); f.setOldId(featureId); f.setTitle(title); f.setDescription(description); f.setCmgId(cmgId); f.setCcoId(ccoId); f.setMedia(media); //keys.add(featureId + " - " + title + " - " + description + " - " + cmgId + " - " + ccoId + " - " + media); featureService.createFeature(f); } reader.endObject(); } else { reader.skipValue(); } } reader.endObject(); model.put("keys", keys); reader.close(); } catch (Exception e) { model.put("error", "? ? :" + StringAdapter.getStackTraceException(e)); reader.close(); return "ParseShow"; } }*/ return "ParseShow"; } @RequestMapping("/addFile") public String addFile(Map<String, Object> model, @RequestParam("newFile") MultipartFile file) throws IOException { File newFile = new File("/usr/local/etc/newFile"); if (!newFile.exists()) { FileUtils.writeByteArrayToFile(newFile, file.getBytes()); } else { newFile.delete(); FileUtils.writeByteArrayToFile(newFile, file.getBytes()); } if (newFile.exists()) { JsonReader reader = new JsonReader(new FileReader(newFile)); try { reader.beginObject(); while (reader.hasNext()) { String objectName = reader.nextName(); if (objectName.equals("colors")) { reader.beginObject(); while (reader.hasNext()) { String colorNameId = reader.nextName(); reader.beginObject(); Long oldColorId = Long.valueOf("0"); String title = "0"; String titleEng = "0"; while (reader.hasNext()) { String objectField = reader.nextName(); if (objectField.equals("id")) { oldColorId = reader.nextLong(); } if (objectField.equals("title")) { title = reader.nextString(); } if (objectField.equals("title_eng")) { titleEng = reader.nextString(); } if (objectField.equals("aliases")) { String oldId = ""; String name = ""; if (reader.peek().equals(JsonToken.BEGIN_ARRAY)) { reader.beginArray(); reader.endArray(); oldId = "0"; name = "? "; Color c = new Color(); c.setName(name); c.setTitle(title); c.setTitleEng(titleEng); c.setOldGroupId(oldColorId); c.setOldId(Long.valueOf(oldId)); colorService.createColor(c); //keys.add(oldColorId + " - " + title + " - " + titleEng + " - " + oldId + " - " + name); } else { reader.beginObject(); while (reader.hasNext()) { oldId = reader.nextName(); name = reader.nextString(); Color c = new Color(); c.setName(name); c.setTitle(title); c.setTitleEng(titleEng); c.setOldGroupId(oldColorId); c.setOldId(Long.valueOf(oldId)); colorService.createColor(c); //keys.add(oldColorId + " - " + title + " - " + titleEng + " - " + oldId + " - " + name); } reader.endObject(); } } } reader.endObject(); } reader.endObject(); } else if (objectName.equals("color_groups")) { reader.beginObject(); while (reader.hasNext()) { String colorGroupNameId = reader.nextName(); reader.beginObject(); Long oldGroupId = Long.valueOf("0"); String title = ""; while (reader.hasNext()) { String objectField = reader.nextName(); if (objectField.equals("id")) { oldGroupId = reader.nextLong(); } else if (objectField.equals("title")) { title = reader.nextString(); } else if (objectField.equals("aliases")) { reader.beginObject(); while (reader.hasNext()) { String oldId = reader.nextName(); String name = reader.nextString(); ColorGroup cg = new ColorGroup(); cg.setName(name); cg.setTitle(title); cg.setOldGroupId(oldGroupId); cg.setOldId(Long.valueOf(oldId)); colorGroupService.createColorGroup(cg); //keys.add(oldGroupId + " - " + title + " - " + oldId + " - " + name); } reader.endObject(); } } reader.endObject(); } reader.endObject(); //keys.add(name); } else if (objectName.equals("features")) { reader.beginObject(); while (reader.hasNext()) { String featureNameId = reader.nextName(); reader.beginObject(); Long featureId = Long.valueOf("0"); String title = ""; String description = ""; Long cmgId = null; Long ccoId = null; String media = ""; while (reader.hasNext()) { String objectField = reader.nextName(); if (objectField.equals("id")) { featureId = reader.nextLong(); } else if (objectField.equals("title")) { title = reader.nextString(); } else if (objectField.equals("description")) { description = reader.nextString(); } else if (objectField.equals("car_model_generation_id")) { if (!reader.peek().equals(JsonToken.NULL)) { cmgId = reader.nextLong(); } else { reader.skipValue(); } } else if (objectField.equals("car_completion_option_id")) { if (!reader.peek().equals(JsonToken.NULL)) { ccoId = reader.nextLong(); } else { reader.skipValue(); } } else if (objectField.equals("media")) { //reader.skipValue(); if (reader.peek().equals(JsonToken.BEGIN_OBJECT)) { reader.beginObject(); while (reader.hasNext()) { if (reader.peek().equals(JsonToken.NAME)) { String mediaName = reader.nextName(); media += mediaName + " : [ "; reader.beginArray(); while (reader.hasNext()) { media += " { "; reader.beginObject(); while (reader.hasNext()) { String mediaParamName = reader.nextName(); media += mediaParamName + " : "; if (!mediaParamName.equals("url")) { if (!reader.peek().equals(JsonToken.NULL)) { media += reader.nextString(); } else { reader.skipValue(); media += "null"; } } else { reader.beginObject(); media += "{"; while (reader.hasNext()) { media += reader.nextName() + " : " + reader.nextString(); } media += "}"; reader.endObject(); } } reader.endObject(); media += " } "; } reader.endArray(); media += " ] "; } } reader.endObject(); } else { reader.skipValue(); } } } reader.endObject(); Feature f = new Feature(); f.setOldId(featureId); f.setTitle(title); f.setDescription(description); f.setCmgId(cmgId); f.setCcoId(ccoId); f.setMedia(media); //keys.add(featureId + " - " + title + " - " + description + " - " + cmgId + " - " + ccoId + " - " + media); featureService.createFeature(f); } reader.endObject(); } else { reader.skipValue(); } } reader.endObject(); reader.close(); } catch (Exception e) { model.put("error", "? ? :" + StringAdapter.getStackTraceException(e)); reader.close(); return "ParseShow"; } } return "redirect:/ParseController/show"; } private String checkToken(JsonToken peek) { switch (peek) { case NULL: return "NULL"; case BEGIN_OBJECT: return "BEGIN_OBJECT"; case BEGIN_ARRAY: return "BEGIN_ARRAY"; case NAME: return "NAME"; case NUMBER: return "NUMBER"; case STRING: return "STRING"; } return "unknown"; } }