/** * Bestimmt die betrachtete Version des Konfigurationsbereichs in dem das angegebene Objekt * enthalten ist. * * @param object Systemobjekt zu dem die Version ermittelt werden soll. * @return Version des Konfigurationsbereichs des angegebenen Systemobjekts */ public short getVersion(final SystemObject object) { final ConfigurationArea configurationArea = object.getConfigurationArea(); Short version = _configurationAreaVersions.get(configurationArea); if (version != null) return version.shortValue(); // throw new IllegalStateException("Version des Konfigurationsbereichs " + // object.getConfigurationArea().getPidOrNameOrId() + " nicht definiert"); // Falls in der Map ein Konfigurationsbereich nicht enthalten ist, dann wird die aktive Version // des Bereichs zurückgegeben. return configurationArea.getActiveVersion(); }
/** * Erstellt dieses Objekt * * @param configurationArea Konfigurationsbereich * @param pid * @param typePid Objekt-Typ-Pid * @param objectName Objekt-name falls vorhanden * @param allConfigurationData Konfigurationsdaten * @param origId * @param origConfigAuthority * @throws MissingObjectException Falls der angegebene Typ nicht existiert oder nicht vom Typ * DynamicObjectType ist. * @throws ConfigurationChangeException Falls die Konfigurationsänderung nicht durchgeführt werden * konnte */ public void create( final ConfigurationArea configurationArea, final String pid, final String typePid, final String objectName, final Map<PidAttributeGroupUsage, Data> allConfigurationData, final long origId, final String origConfigAuthority) throws MissingObjectException, ConfigurationChangeException, MissingKExDaVAttributeGroupException { final SystemObject type = _connection.getDataModel().getObject(typePid); if (type == null) throw new MissingObjectException(type + " konnte nicht gefunden werden"); if (!(type instanceof DynamicObjectType)) { throw new MissingObjectException(type + " ist kein Typ für dynamische Objekte"); } final Map<PidAttributeGroupUsage, Data> map = new HashMap<PidAttributeGroupUsage, Data>(allConfigurationData); if (_connection.getDataModel().getAttributeGroup(Constants.Pids.AttributeGroupKExDaVConfigData) == null) { throw new MissingKExDaVAttributeGroupException(); } if (origConfigAuthority != null) { map.put( new PidAttributeGroupUsage( Constants.Pids.AttributeGroupKExDaVConfigData, Constants.Pids.AspectProperties), createProperties(origId, origConfigAuthority)); } final Collection<DataAndATGUsageInformation> dataList = convertConfigurationData(map); _manager.addMessage( Message.newInfo("Erstelle Objekt: " + (pid.length() == 0 ? '[' + origId + ']' : pid))); final DynamicObject dynamicObject = configurationArea.createDynamicObject((DynamicObjectType) type, pid, objectName, dataList); setWrappedObject(dynamicObject); }
/** * Liefert das System-Objekt mit der angegebenen PID zurück. * * @param pid Die permanente ID des System-Objekts * @return Das gewünschte System-Objekt oder <code>null</code>, wenn es kein Objekt mit der * angegebenen PID gibt. * @see de.bsvrz.dav.daf.main.config.DataModel */ public SystemObject getObject(String pid) { if (pid == null || pid.equals("") || pid.equals("null")) return null; SystemObject object = _dataModel.getObject(pid); if (isValid(object)) return object; synchronized (this) { // Sans, STS, KonfigAss: Korrektur _newlyActiveObjects if (_newlyActiveObjects == null) { _newlyActiveObjects = new HashMap<String, SystemObject>(); long startTime = System.currentTimeMillis(); final Map<String, ConfigurationArea> areas = ((ConfigDataModel) _dataModel).getAllConfigurationAreas(); for (ConfigurationArea configurationArea : areas.values()) { final Collection<SystemObject> newObjects = configurationArea.getNewObjects(); for (SystemObject newObject : newObjects) { final String newObjectPid = newObject.getPid(); if (newObjectPid != null && newObjectPid.length() > 0 && isValid(newObject)) { _newlyActiveObjects.put(newObjectPid, newObject); } } _debug.fine( "Zwischenspeicherung von neuerdings aktiven Objekten dauerte in Millisekunden", System.currentTimeMillis() - startTime); } } return _newlyActiveObjects.get(pid); } // final Set<ConfigurationArea> configurationAreas = _configurationAreaVersions.keySet(); // for(ConfigurationArea configurationArea : configurationAreas) { // final Collection<SystemObject> newObjects = configurationArea.getNewObjects(); // for(SystemObject systemObject : newObjects) { // if(systemObject.getPid().equals(pid) && isValid(systemObject)) return systemObject; // } // } // return null; }