blob: 8c59781ddc43b3a6fc481274b87c14d65482086d [file] [log] [blame]
/*
* Copyright (c) 2010-2012 Eike Stepper (Berlin, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Ibrahim Sallam - initial API and implementation
*/
package org.eclipse.emf.cdo.server.internal.objectivity.db;
import org.eclipse.emf.cdo.server.internal.objectivity.schema.ObjyProperty;
import org.eclipse.emf.cdo.server.internal.objectivity.utils.ObjyDb;
import com.objy.db.app.Session;
import com.objy.db.app.ooId;
import com.objy.db.app.ooObj;
import com.objy.db.util.ooMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class ObjyPropertyMapHandler
{
protected ooId propertyMapId;
public ObjyPropertyMapHandler(String repositoryName)
{
propertyMapId = ObjyDb.getOrCreatePropertyMap(repositoryName);
}
/***
* Factory method to create the PropertyMap, which is an ooMap
*/
public static ooId create(ooId scopeContOid)
{
ooMap map = new ooMap();
ooObj clusterObject = ooObj.create_ooObj(scopeContOid);
clusterObject.cluster(map);
return map.getOid();
}
/***
* This function assume we are in an Objy trnasaction.
*/
public void setPropertyValues(Map<String, String> properties)
{
// get the map.
ooMap propertyMap = getMap();
String key = null;
String value = null;
ObjyProperty property = null;
for (Entry<String, String> entry : properties.entrySet())
{
key = entry.getKey();
value = entry.getValue();
// check if we have the property
if (propertyMap.isMember(key))
{
property = (ObjyProperty)propertyMap.lookup(key);
property.setValue(value);
}
else
{
property = new ObjyProperty(key, value);
propertyMap.add(property, key);
}
}
}
/***
* This function assume we are in an Objy trnasaction.
*/
public void removePropertyValues(Set<String> names)
{
// get the map.
ooMap propertyMap = getMap();
ObjyProperty property = null;
for (String key : names)
{
if (propertyMap.isMember(key))
{
property = (ObjyProperty)propertyMap.lookup(key);
// although removing the object will remove it from the map
// it's cleaner to do it explicitly.
propertyMap.remove(key);
property.delete();
}
}
}
/***
* This function assume we are in an Objy trnasaction.
*/
public Map<String, String> getPropertyValues(Set<String> names)
{
Map<String, String> properties = new HashMap<String, String>();
// get the map.
ooMap propertyMap = getMap();
ObjyProperty property = null;
for (String key : names)
{
if (propertyMap.isMember(key))
{
property = (ObjyProperty)propertyMap.lookup(key);
properties.put(property.getKey(), property.getValue());
}
}
return properties;
}
/***
* This function assume we are in an Objy transaction.
*/
private ooMap getMap()
{
ooMap map = null;
map = (ooMap)Session.getCurrent().getFD().objectFrom(propertyMapId);
return map;
}
}