/*
* $Id$
*
* Copyright 2008 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.services.blitz.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ome.api.ITypes;
import ome.services.blitz.util.BlitzExecutor;
import omero.ServerError;
import omero.api.AMD_ITypes_allEnumerations;
import omero.api.AMD_ITypes_createEnumeration;
import omero.api.AMD_ITypes_deleteEnumeration;
import omero.api.AMD_ITypes_getAnnotationTypes;
import omero.api.AMD_ITypes_getEnumeration;
import omero.api.AMD_ITypes_getEnumerationTypes;
import omero.api.AMD_ITypes_getEnumerationsWithEntries;
import omero.api.AMD_ITypes_getOriginalEnumerations;
import omero.api.AMD_ITypes_resetEnumerations;
import omero.api.AMD_ITypes_updateEnumeration;
import omero.api.AMD_ITypes_updateEnumerations;
import omero.api._ITypesOperations;
import omero.model.IObject;
import omero.util.IceMapper;
import Ice.Current;
import Ice.UserException;
/**
* Implementation of the ITypes service.
*
* @author Josh Moore, josh at glencoesoftware.com
* @since 3.0-Beta4
* @see ome.api.ITypes
*/
public class TypesI extends AbstractAmdServant implements _ITypesOperations {
public TypesI(ITypes service, BlitzExecutor be) {
super(service, be);
}
// Interface methods
// =========================================================================
public void allEnumerations_async(AMD_ITypes_allEnumerations __cb,
String type, Current __current) throws ServerError {
callInvokerOnRawArgs(__cb, __current, type);
}
public void createEnumeration_async(AMD_ITypes_createEnumeration __cb,
IObject newEnum, Current __current) throws ServerError {
callInvokerOnRawArgs(__cb, __current, newEnum);
}
public void deleteEnumeration_async(AMD_ITypes_deleteEnumeration __cb,
IObject oldEnum, Current __current) throws ServerError {
callInvokerOnRawArgs(__cb, __current, oldEnum);
}
public void getAnnotationTypes_async(AMD_ITypes_getAnnotationTypes __cb,
Current __current) throws ServerError {
callInvokerOnRawArgs(__cb, __current);
}
public void getEnumerationTypes_async(AMD_ITypes_getEnumerationTypes __cb,
Current __current) throws ServerError {
IceMapper mapper = new IceMapper(new IceMapper.ReturnMapping(){
public Object mapReturnValue(IceMapper mapper, Object value)
throws UserException {
if (value == null) {
return null;
}
List<Class> iv = (List<Class>) value;
List<String> rv = new ArrayList<String>(iv.size());
for (Class i : iv) {
rv.add(i.getSimpleName());
}
return rv;
}});
callInvokerOnMappedArgs(mapper, __cb, __current);
}
public void getEnumeration_async(AMD_ITypes_getEnumeration __cb,
String type, String value, Current __current) throws ServerError {
callInvokerOnRawArgs(__cb, __current, type, value);
}
private final static Logger log = LoggerFactory.getLogger(TypesI.class);
public void getEnumerationsWithEntries_async(
AMD_ITypes_getEnumerationsWithEntries __cb, Current __current)
throws ServerError {
IceMapper mapper = new IceMapper(new IceMapper.ReturnMapping(){
public Object mapReturnValue(IceMapper mapper, Object value)
throws UserException {
if (value == null) {
return null;
}
Map<Class, List<ome.model.IEnum>> map = (Map<Class, List<ome.model.IEnum>>) value;
Map<String, List<IObject>> rv = new HashMap<String, List<IObject>>();
for (Class key : map.keySet()) {
Object v = map.get(key);
String kr = key.getSimpleName();
List<IObject> vr = (List<IObject>) IceMapper.FILTERABLE_COLLECTION.mapReturnValue(mapper, v);
rv.put(kr, vr);
}
return rv;
}});
callInvokerOnMappedArgs(mapper, __cb, __current);
}
public void getOriginalEnumerations_async(
AMD_ITypes_getOriginalEnumerations __cb, Current __current)
throws ServerError {
callInvokerOnRawArgs(__cb, __current);
}
public void resetEnumerations_async(AMD_ITypes_resetEnumerations __cb,
String enumClass, Current __current) throws ServerError {
callInvokerOnRawArgs(__cb, __current, enumClass);
}
public void updateEnumeration_async(AMD_ITypes_updateEnumeration __cb,
IObject oldEnum, Current __current) throws ServerError {
callInvokerOnRawArgs(__cb, __current, oldEnum);
}
public void updateEnumerations_async(AMD_ITypes_updateEnumerations __cb,
List<IObject> oldEnums, Current __current) throws ServerError {
callInvokerOnRawArgs(__cb, __current, oldEnums);
}
}