/** {@inheritDoc} */ @Override @MethodLog public long registerMethodSensorTypeIdent( long platformId, String fullyQualifiedClassName, Map<String, Object> parameters) { MethodSensorTypeIdent methodSensorTypeIdent; List<MethodSensorTypeIdent> methodSensorTypeIdents = methodSensorTypeIdentDao.findByClassNameAndPlatformId(fullyQualifiedClassName, platformId); if (1 == methodSensorTypeIdents.size()) { methodSensorTypeIdent = methodSensorTypeIdents.get(0); // update preferences methodSensorTypeIdent.setSettings(parameters); methodSensorTypeIdentDao.saveOrUpdate(methodSensorTypeIdent); } else { // only if the new sensor is registered we need to update the platform ident PlatformIdent platformIdent = platformIdentDao.load(platformId); methodSensorTypeIdent = new MethodSensorTypeIdent(); methodSensorTypeIdent.setPlatformIdent(platformIdent); methodSensorTypeIdent.setFullyQualifiedClassName(fullyQualifiedClassName); methodSensorTypeIdent.setSettings(parameters); Set<SensorTypeIdent> sensorTypeIdents = platformIdent.getSensorTypeIdents(); sensorTypeIdents.add(methodSensorTypeIdent); methodSensorTypeIdentDao.saveOrUpdate(methodSensorTypeIdent); platformIdentDao.saveOrUpdate(platformIdent); } return methodSensorTypeIdent.getId(); }
/** {@inheritDoc} */ @Override @MethodLog public void addSensorTypeToMethod(long methodSensorTypeId, long methodId) { MethodIdentToSensorType methodIdentToSensorType = methodIdentToSensorTypeDao.find(methodId, methodSensorTypeId); if (null == methodIdentToSensorType) { MethodIdent methodIdent = methodIdentDao.load(methodId); MethodSensorTypeIdent methodSensorTypeIdent = methodSensorTypeIdentDao.load(methodSensorTypeId); methodIdentToSensorType = new MethodIdentToSensorType(methodIdent, methodSensorTypeIdent, null); } // always update the timestamp methodIdentToSensorType.setTimestamp( new Timestamp(GregorianCalendar.getInstance().getTimeInMillis())); methodIdentToSensorTypeDao.saveOrUpdate(methodIdentToSensorType); }