@Override public void prepare() throws Exception { user = (Users) ActionContext.getContext().getSession().get(APConstants.SESSION_USER); // user = (Users) this.getSession().get(APConstants.SESSION_USER); idEntSystem = UsersDao.getEntitySystem(user.getIdUsr()); EntitiesDao entDao = new EntitiesDao(); Entities entTemp = entDao.findById(idEntSystem); typeEnt = entTemp.getEntitiesTypes().getIdEntTyp(); if (entTemp.getEntitiesTypes().getIdEntTyp() == 2) { ProducersDao proDao = new ProducersDao(); Producers proTemp = new Producers(); proTemp = proDao.objectByEntityId(idEntSystem); if (proTemp != null) { idProducer = proTemp.getIdPro(); name_producer = entTemp.getNameEnt(); } } this.setDepartment_property(new DepartmentsDao().findAll()); usrDao = new UsersDao(); idUsrSystem = user.getIdUsr(); List<Municipalities> mun = new ArrayList<Municipalities>(); mun.add(new Municipalities()); this.setCity_property(mun); assDao = new AssociationDao(); // HashMap route = new HashMap(); // route.put("getting", getText("email.from")); // listRoute.add(route); // route = new HashMap(); //// String val = getText('text.title.farm'); // route.put("listFarm", getText("email.from")); // listRoute.add(route); }
/** * Encargado de guardar la informacion suministrada por el usuario para una finca * * @return Estado del proceso */ public String saveData() throws SQLException { if (!usrDao.getPrivilegeUser(idUsrSystem, "farm/create") || !usrDao.getPrivilegeUser(idUsrSystem, "farm/modify")) { return BaseAction.NOT_AUTHORIZED; } String action = ""; /* * Se evalua dependiendo a la accion realizada: * 1) create: Al momento de guardar un registro por primera ves * 2) modify: Al momento de modificar un registro * 3) delete: Al momento de borrar un registro */ if (actExe.equals("create")) { action = "C"; } else if (actExe.equals("modify")) { action = "M"; } ProducersDao proDao = new ProducersDao(); SessionFactory sessions = HibernateUtil.getSessionFactory(); Session session = sessions.openSession(); Transaction tx = null; HashMap proData = proDao.findById(idProducer); Double altPro = Double.parseDouble(altitude_property.replace(',', '.')); Double latPro = Double.parseDouble(latitude_property.replace(',', '.')); Double lonPro = Double.parseDouble(length_property.replace(',', '.')); // Double altPro = Double.parseDouble(altitude_property); // Double latPro = Double.parseDouble(latitude_property); // Double lonPro = Double.parseDouble(length_property); if (option_geo == 2) { latPro = (latitude_minutes_property / 60) + (latitude_seconds_property / 3600); latPro = (latitude_degrees_property < 0) ? ((Math.abs(latitude_degrees_property)) + latPro) * -1 : (latitude_degrees_property + latPro); lonPro = (length_minutes_property / 60) + (length_seconds_property / 3600); lonPro = (length_degrees_property < 0) ? ((Math.abs(length_degrees_property)) + lonPro) * -1 : (length_degrees_property + lonPro); } try { tx = session.beginTransaction(); SfGuardUserDao sfDao = new SfGuardUserDao(); SfGuardUser sfUser = sfDao.getUserByLogin(user.getCreatedBy(), user.getNameUserUsr(), ""); Farms far = null; int idProOld = 0; if (idFarm <= 0) { far = new Farms(); far.setIdFar(null); far.setGeorefFar(true); far.setIdProjectFar("1"); far.setStatus(true); } else { HashMap fieldInfo = farDao.findById(idFarm); idProOld = Integer.parseInt(String.valueOf(fieldInfo.get("id_producer"))); far = farDao.objectById(idFarm); } far.setNameFar(name_property); far.setAddressFar(direction_property); far.setLatitudeFar(latPro); far.setLongitudeFar(lonPro); far.setAltitudeFar(altPro); far.setNameCommuneFar(lane_property); far.setMunicipalities(new Municipalities(Integer.parseInt(cityFar))); Integer idUserMobile = null; if (sfUser != null) { idUserMobile = sfUser.getId().intValue(); } far.setCreatedBy(idUserMobile); session.saveOrUpdate(far); depFar = String.valueOf(MunicipalitiesDao.getDepartmentId(Integer.parseInt(cityFar))); // farDao.save(far); // System.out.println("valId->"+far.getIdFar()); if (far.getIdFar() > 0 && action.equals("M")) { if (idProOld != idProducer) { FarmsProducers farTemp = farDao.checkFarmProducer(far.getIdFar(), idProOld); session.delete(farTemp); } // System.out.println("id field->"+fiePro.getFields().getIdFie()); // fiePro = new FieldsProducers(); // fiePro.setId(new FieldsProducersId(lot.getIdFie(), idProducer)); // fiePro.setFields(lot); // fiePro.setProducers(proDao.objectById(idProducer)); // fiePro.setFieldTypes(new FieldTypes(typeLot)); // session.saveOrUpdate(fiePro); } if (idProOld != idProducer) { FarmsProducers farPro = new FarmsProducers(); farPro.setId(new FarmsProducersId(far.getIdFar(), idProducer)); farPro.setFarms(far); farPro.setProducers(proDao.objectById(idProducer)); session.saveOrUpdate(farPro); } /*LogEntities log = new LogEntities(); log.setIdLogEnt(null); log.setIdEntityLogEnt(idEntSystem); //Colocar el usuario registrado en el sistema log.setIdObjectLogEnt(far.getIdFar()); log.setTableLogEnt("farms"); log.setDateLogEnt(new Date()); log.setActionTypeLogEnt(action); session.saveOrUpdate(log);*/ // logDao.save(log); /* "102": "Nombre de la finca" => nameFarm "103": "-30.98664622,-64.10017675,601" Capturar posicion => lat, lng, alt "105": "Vereda" => district "108": "IndicaciĆ³n (como llegar)" => address "241": "Seleccione el productor asociado" => Seleccion (solo dato seleccionado) => prodId "336": "Departamento" => department "338": "Municipio (Amazonas)" => municipality */ // Manejo para ingresar datos en MongoDB HashMap valInfo = new HashMap(); valInfo.put("farmId", far.getIdFar()); valInfo.put("nameFarm", far.getNameFar()); valInfo.put("prodId", idProducer); valInfo.put("nameProd", proData.get("name")); valInfo.put("district", far.getNameCommuneFar()); valInfo.put("address", far.getAddressFar()); valInfo.put("lat", latPro); valInfo.put("lng", lonPro); valInfo.put("alt", altPro); valInfo.put("department", depFar); valInfo.put("municipality", cityFar); valInfo.put("userMobileId", idUserMobile); // System.out.println("valInfo=>"+valInfo); BasicDBObject query = new BasicDBObject(); query.put("InsertedId", "" + far.getIdFar()); query.put("form_id", "3"); MongoClient mongo = null; try { mongo = new MongoClient("localhost", 27017); } catch (UnknownHostException ex) { Logger.getLogger(ActionField.class.getName()).log(Level.SEVERE, null, ex); } DB db = mongo.getDB("ciat"); DBCollection col = db.getCollection("log_form_records"); DBCursor cursor = col.find(query); WriteResult result = null; BasicDBObject jsonField = GlobalFunctions.generateJSONFarm(valInfo); if (cursor.count() > 0) { System.out.println("actualizo mongo"); result = col.update(query, jsonField); } else { System.out.println("inserto mongo"); result = col.insert(jsonField); } if (result.getError() != null) { throw new HibernateException(""); } mongo.close(); tx.commit(); state = "success"; if (action.equals("C")) { info = "La finca ha sido agregada con exito"; // return "list"; } else if (action.equals("M")) { info = "La finca ha sido modificada con exito"; } } catch (HibernateException e) { if (tx != null) { tx.rollback(); } e.printStackTrace(); state = "failure"; info = "Fallo al momento de agregar una finca"; } finally { session.close(); } return "states"; // return ERROR; }