controllers.ParseController.java Source code

Java tutorial

Introduction

Here is the source code for controllers.ParseController.java

Source

/*
 * 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&notObj");
                             reader.skipValue();
                             }*/
                        }
                        reader.endArray();
                        //keys.add("-}");
                        /* } else {
                         keys.add("--notOnj&notArr");
                         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";
    }

}