protected List<String> getChangedDatasInfoAccess(TopiaContext context, InfoAccess infoAcces, InfoAccess infoAccesUpdate) throws TopiaException { // Modification demandant validation List<String> values = new ArrayList<String>(); // Eleveur if (infoAcces != null && infoAccesUpdate != null) { values.add(diffAndMix(infoAcces.getNomAcces(), infoAccesUpdate.getNomAcces())); values.add(diffAndMixOldAndNewLabelValue(context, "IAS", infoAcces.getAccesSilo(), infoAccesUpdate.getAccesSilo())); values.add(diffAndMixOldAndNewLabelValue(context, "IMC", infoAcces.getModeChargement(), infoAccesUpdate.getModeChargement())); values.add(diffAndMix(String.valueOf(infoAcces.getEtat()), String.valueOf(infoAccesUpdate.getEtat()))); values.add(diffAndMixNiveauSecu(infoAcces.getNiveauSecurite(), infoAccesUpdate.getNiveauSecurite())); values.add(diffAndMixOldAndNewRiskValue(context, infoAcces.getRisques(), infoAccesUpdate.getRisques())); values.add(diffAndMix(infoAcces.getCommentaireSecurite(), infoAccesUpdate.getCommentaireSecurite())); } return values; }
public InfoAccess saveInfoAccess(TopiaContext transaction, InfoAccess infoAccess, String breederTopiaID) throws TopiaException, LogicException { if (log.isDebugEnabled()) { log.debug("saveInfoAccess " + infoAccess.getTopiaId()); String topiaId = infoAccess.getTopiaId(); Point newGPS = infoAccess.getGps().getPoint(); if (infoAccess2.getGps() != null) { oldGPS = infoAccess2.getGps(); PointGPS pointGPS = infoAccess2.getGps(); SandraDAOHelper.getPointGPSDAO(transaction).delete(pointGPS); if (infoAccess2.getEtat() == InfoAccessEtat.INFOACCESS_ACTIF) { PointGPSDAO pointGPSDAO = SandraDAOHelper.getPointGPSDAO(transaction); PointGPS pointGPS = pointGPSDAO.create("point", newGPS); infoAccess2.setGps(pointGPS); infoAccess2.setAccesSilo(infoAccess.getAccesSilo()); infoAccess2.setCommentaireSecurite(infoAccess.getCommentaireSecurite()); infoAccess2.setModeChargement(infoAccess.getModeChargement()); infoAccess2.setNiveauSecurite(infoAccess.getNiveauSecurite()); infoAccess2.setRisques(infoAccess.getRisques()); infoAccess2.setTrace(infoAccess.getTrace()); infoAccess2.setType(infoAccess.getType());
String infoAccessId = infoAccessUpdate.getTopiaId(); InfoAccess infoAccess = infoAccessDAO.findByTopiaId(infoAccessId); log.warn("Info access not found with id[" + infoAccessId + "] name[" + infoAccessUpdate.getAccesSilo() + "]"); log.warn("Ino access will not be updated"); return; infoAccessUpdate.setNiveauSecurite(infoAccess.getNiveauSecurite()); SandraHelper.createActionSecuriteIfNeeded(transaction, getUserLogin(), eleveur, infoAccessUpdate); serviceCommon.copyEntityIfNecessary(transaction, infoAccessUpdate, infoAccess, "commentaireSecurite"); serviceCommon.copyEntityIfNecessary(transaction, infoAccessUpdate, infoAccess, "modeChargement"); infoAccess.setEtat(infoAccessUpdate.getEtat()); if (infoAccess.getNiveauSecurite() != infoAccessUpdate.getNiveauSecurite()) { infoAccess.setNiveauSecurite(infoAccessUpdate.getNiveauSecurite()); if (!isAccesEleveur) { serviceCommon.incNbSecuMaj(transaction); Collection<String> risquesUpdated = infoAccessUpdate.getRisques(); Collection<String> risques = infoAccess.getRisques(); if (risques == null || !risques.equals(risquesUpdated)) { infoAccess.setRisques(risquesUpdated); serviceCommon.incNbMaj(transaction); int newType = infoAccessUpdate.getType(); int oldType = infoAccess.getType(); if (newType != oldType) { infoAccess.setType(newType);
if (infoAccess.getEtat() == InfoAccessEtat.INFOACCESS_ACTIF) { infoAccess.setEtat(InfoAccessEtat.INFOACCESS_VERROU); } else { infoAccess.setEtat(InfoAccessEtat.INFOACCESS_ACTIF); Collection<TaasUser> users = infoAccess.getUsersVerrouillage(); Eleveur eleveur = infoAccess.getEleveur(); String eleveurLbl = eleveur.getRaisonSociale() + eleveur.getVille() + eleveur.getCodePostal().substring(0, 2); String siloLbl = infoAccess.getNomAcces(); String siloUrl = ServiceHelper.getSandraUrl() + "/appli/breeder/infoAccess/view.do?topiaId=" + infoAccess.getTopiaId().replace("#", "%23"); EmailHelper.sendEmail(email, "[" + ServiceHelper.getSandraUrl() + "] Le GPS du silo '" + siloLbl + "'de l'éleveur '" + eleveurLbl + "' est déverrouillé.", "Le GPS du silo '" + siloLbl + "' de l'éleveur '" + eleveurLbl + "' est déverrouillé : " + siloUrl); infoAccess.clearUsersVerrouillage();
accesEleveur.setNiveauSecurite(eleveur.getNiveauSecurite()); accesEleveur.setCommentaireSecurite(eleveur.getCommentaire()); accesEleveur.setType(0); } else { String accesEleveurId = accesEleveur.getTopiaId(); if (accesEleveurId == null) { accesEleveur.setTopiaId(TopiaId.create(InfoAccess.class)); eleveur.setAccesEleveur(accesEleveur); String accesSiloId = accesSilo.getTopiaId(); if (accesSiloId == null) { accesSilo.setTopiaId(TopiaId.create(InfoAccess.class)); eleveur.addAccesSilos(accesSilo);
PointGPS pointGPSOld = infoAccesOld.getGps(); PointGPS pointGPS = infoAccessUpdate.getGps(); if (pointGPS != null) { pointGPS.setTopiaId(TopiaId.create(PointGPS.class)); infoAccesOld.setGps(pointGPS); TraceGPS traceGPS = infoAccessUpdate.getTrace(); if (traceGPS != null) { infoAccesOld.setTrace(traceGPS); ServiceHelper.getSandraUrl(), getUserLogin(), eleveur.getTopiaId(), infoAccesOld.getTopiaId(), String.valueOf(oldX), String.valueOf(oldY),
infoAccess.setNiveauSecurite(-1); infoAccess.setEtat(0); infoAccessDAO.update(infoAccess); eleveur.setAccesEleveur(infoAccess); } else { silo.setNomAcces(newSiloNom); silo = infoAccessDAO.update(silo); silo.setNomAcces(siloNom); silo.setEtat(InfoAccessEtat.INFOACCESS_ACTIF); silo.setNiveauSecurite(-1); silo.setType(0);
if (infoAccess.getNiveauSecurite() > 1) { args.add(eleveurTopiaId); args.add("infoAccessTopiaId"); args.add(infoAccess.getTopiaId()); args.add("type"); args.add(type); actionSecurite.setCommentaire(infoAccess.getCommentaireSecurite());
@Override protected String getKey(InfoAccess value) { return value.getNomAcces(); } };
@Override @Transaction public void findAndDeleteDuplicateInfoAccess(TopiaContext transaction) throws TopiaException, LogicException { if (log.isDebugEnabled()) { log.debug("findAndDeleteDuplicateInfoAccess"); } InfoAccessDAO dao = SandraDAOHelper.getInfoAccessDAO(transaction); int cnt = 0; List<InfoAccess> infoAccessList = dao.findAll(); Map<String, InfoAccess> infoAccessNames = new HashMap<String, InfoAccess>(); for (InfoAccess infoAccess : infoAccessList) { InfoAccess cached = infoAccessNames.get(infoAccess.getNomAcces()); if (cached != null) { Eleveur cachedEleveur = findEleveurByAccesSilo(transaction, cached.getTopiaId()); Eleveur eleveur = findEleveurByAccesSilo(transaction, infoAccess.getTopiaId()); if (cachedEleveur != null && eleveur != null && cachedEleveur.getTopiaId().equals(eleveur.getTopiaId())) { dao.delete(infoAccess); cnt = cnt + 1; } } else { String name = infoAccess.getNomAcces(); if (name != null && !name.trim().isEmpty()) { infoAccessNames.put(name, infoAccess); } } } if (log.isDebugEnabled()) { log.debug("All duplicate info access are deleted, found : " + cnt); } }
public static void createActionSecuriteIfNeeded(TopiaContext transaction, String userLogin, Eleveur eleveur, InfoAccess infoAccess) throws TopiaException { // TMA 201 : https://jira.groupe-glon.fr/jira/browse/SDRAMTNC-201 // Create default action security if securityLevel = orange, red or black // TMA 371 : https://jira.groupe-glon.fr/browse/SDRAMTNC-371 // Create only for silo // Search if already exist String type = "A001"; // Empty creation ActionSecuriteDAO actionSecuriteDAO = SandraDAOHelper.getActionSecuriteDAO(transaction); EleveurDAO eleveurDAO = SandraDAOHelper.getEleveurDAO(transaction); ActionSecurite actionSecurite = actionSecuriteDAO.create(); actionSecurite.setNiveauSecurite(infoAccess.getNiveauSecurite()); actionSecurite.setType(type); actionSecurite.setDateAction(new Date()); actionSecurite.setUserCreation(userLogin); // only for silo if (!eleveur.getAccesEleveur().equals(infoAccess)) { actionSecurite.setInfoAccess(infoAccess); } actionSecurite.setCommentaire(infoAccess.getCommentaireSecurite()); eleveur.addActionSecurite(actionSecurite); actionSecuriteDAO.update(actionSecurite); eleveurDAO.update(eleveur); log.info("Creation of default action security for eleveur " + eleveur.getNom()); }
@Override public void notifyChangedInfoAccess(TopiaContext context, String notifierName, String userLogin, String breederTopiaId, InfoAccess infoAccesOld, InfoAccess infoAcces, Double oldX, Double oldY) throws TopiaException { List<String> values = getChangedDatasInfoAccess(context, infoAccesOld, infoAcces); // Get new coord String newX = String.valueOf(infoAcces.getGps().getPoint().getX()); String newY = String.valueOf(infoAcces.getGps().getPoint().getY()); // Coords changed String x = diffAndMix(String.valueOf(oldX), newX); String y = diffAndMix(String.valueOf(oldY), newY); // Ajout des variables d'environements et des entites List<String> valuesToSend = new ArrayList<String>(); if (changed(values) || x != null || y != null) { valuesToSend.add(ServiceHelper.getSandraName()); valuesToSend.add(ServiceHelper.getSandraUrl()); valuesToSend.add(userLogin); valuesToSend.add(infoAcces.getTopiaId()); valuesToSend.add(breederTopiaId); valuesToSend.add(x); valuesToSend.add(y); valuesToSend.addAll(values); notifyChanged(notifierName, valuesToSend); } }
public static int getWorstSecurityLevel(Eleveur breeder) { return getWorstInfoAccessSecurityLevel(breeder).getNiveauSecurite(); }
@Override @Transaction public void createAndFillAccessEleveur(TopiaContext transaction) throws TopiaException { if (log.isDebugEnabled()) { log.debug("createAndFillAccessEleveur"); } InfoAccessDAO infoAccessDAO = SandraDAOHelper.getInfoAccessDAO(transaction); String hql = "select eleveur FROM " + Eleveur.class.getName() + " eleveur" + " WHERE acceseleveur IS NULL"; List<Eleveur> eleveurs = transaction.findAll(hql); int cnt = 0; for (Eleveur e : eleveurs) { InfoAccess infoAccess = infoAccessDAO.create(); infoAccess.setCommentaireSecurite(e.getCommentaire()); if (e.getNiveauSecurite() == 0) { infoAccess.setNiveauSecurite(-1); } e.setAccesEleveur(infoAccess); SandraDAOHelper.getEleveurDAO(transaction).update(e); infoAccessDAO.update(infoAccess); cnt++; } log.info(cnt + " access breeders are created"); }
@Override public void notifyChangedInfoAccess(TopiaContext context, String notifierName, String userLogin, String breederTopiaId, InfoAccess infoAccesOld, InfoAccess infoAcces) throws TopiaException { List<String> values = getChangedDatasInfoAccess(context, infoAccesOld, infoAcces); // Ajout des variables d'environements et des entites List<String> valuesToSend = new ArrayList<String>(); if (changed(values)) { valuesToSend.add(ServiceHelper.getSandraName()); valuesToSend.add(ServiceHelper.getSandraUrl()); valuesToSend.add(userLogin); valuesToSend.add(infoAcces.getTopiaId()); valuesToSend.add(breederTopiaId); valuesToSend.addAll(values); notifyChanged(notifierName, valuesToSend); } }
@Override @Transaction public Eleveur findEleveurByAccesSilo(TopiaContext transaction, String infoAccessTopiaId) throws TopiaException, LogicException { if (log.isInfoEnabled()) { log.info("findEleveurByAccesSilo " + infoAccessTopiaId); } InfoAccessDAO infoAccessDAO = SandraDAOHelper.getInfoAccessDAO(transaction); InfoAccess silo = infoAccessDAO.findByTopiaId(infoAccessTopiaId); Eleveur breeder = silo.getEleveur(); return breeder; }
public static void deleteAccesSilo(TopiaContext transaction, String infoAccessTopiaId) throws TopiaException { if (log.isInfoEnabled()) { log.info("deleteAccesSilo " + infoAccessTopiaId); } InfoAccessDAO dao = SandraDAOHelper.getInfoAccessDAO(transaction); InfoAccess infoAccess2 = dao.findByTopiaId(infoAccessTopiaId); infoAccess2.setEtat(InfoAccessEtat.INFOACCESS_SUPPR); dao.update(infoAccess2); } }
protected Collection<String> extractRsk(InfoAccess ia) { return ia.getRisques(); } }
if (entity.equals(item.getEleveur())) { item.setEleveur(null); if (entity.equals(item.getEleveur())) { item.setEleveur(null);
String infoAccessId = infoAccessUpdate.getTopiaId(); InfoAccess infoAccess = infoAccessDAO.findByTopiaId(infoAccessId); log.warn("Info access not found with id[" + infoAccessId + "] name[" + infoAccessUpdate.getAccesSilo() + "]"); log.warn("Ino access will not be updated"); return; serviceCommon.copyEntityIfNecessary(transaction, infoAccessUpdate, infoAccess, "commentaireSecurite"); serviceCommon.copyEntityIfNecessary(transaction, infoAccessUpdate, infoAccess, "modeChargement"); infoAccess.setEtat(infoAccessUpdate.getEtat()); if (infoAccess.getNiveauSecurite() != infoAccessUpdate.getNiveauSecurite()) { infoAccess.setNiveauSecurite(infoAccessUpdate.getNiveauSecurite()); if (!isAccesEleveur) { serviceCommon.incNbSecuMaj(transaction); Collection<String> risquesUpdated = infoAccessUpdate.getRisques(); Collection<String> risques = infoAccess.getRisques(); if (risques == null || !risques.equals(risquesUpdated)) { infoAccess.setRisques(risquesUpdated); serviceCommon.incNbMaj(transaction); int newType = infoAccessUpdate.getType(); int oldType = infoAccess.getType(); if (newType != oldType) { infoAccess.setType(newType); serviceCommon.incNbMaj(transaction);