/*
 * RmiHist1DConverter.java
 *
 * Created on October 14, 2003, 7:39 PM
 */

package hep.aida.ref.remote.testRemote.converters;

import hep.aida.IAnnotation;
import hep.aida.IManagedObject;

import hep.aida.ref.Annotation;
import hep.aida.ref.remote.RemoteManagedObject;
import hep.aida.ref.remote.testRemote.RemoteManagedObjectTest;

/**
 *
 * @author  serbo
 */
public class RemoteObjectTestConverter extends TestConverter {
    
    private static RemoteObjectTestConverter converter = null;
    
    /** Creates a new instance of RmiHist1DAdapter */
    public static RemoteObjectTestConverter getInstance() {
        if (converter == null) converter = new RemoteObjectTestConverter();
        return converter;
    }
    
    /** Creates a new instance of RmiHist1DConverter */
    private RemoteObjectTestConverter() {
        super();
        dataType = "String";
        aidaType = "RemoteManagedObjectTest";
    }
    
    public Object createAidaObject(String name) {
        RemoteManagedObjectTest result = new RemoteManagedObjectTest(name);        
        return result;
    }
    
    public Object extractData(Object aidaObject) {
        if (aidaObject instanceof RemoteManagedObjectTest) {
            String data = ((RemoteManagedObjectTest) aidaObject).getData();
            return data;
        }
        return null;
    }
    
    public boolean updateAidaObject(Object aidaObject, Object newData) {
        boolean ok = false;
        String data = null;
        if (aidaObject instanceof RemoteManagedObjectTest) {
            if (newData instanceof String) data = (String) newData;
            else data = newData.toString();
            ok = true;            
        } else 
            throw new IllegalArgumentException("Not supported object type: "+aidaObject.getClass().getName());
            
        updateData((RemoteManagedObjectTest) aidaObject, data);
        
        return ok;
    }
    
    
    // Service methods
    
    public IManagedObject updateData(RemoteManagedObjectTest to, String data) {
        to.setData(data);
        return to;
    }
    
}
