/*
* Copyright 2011-2014 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*
*/
package omero.cmd;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import ome.io.nio.PixelsService;
import ome.io.nio.ThumbnailService;
import ome.security.ACLVoter;
import ome.security.SecuritySystem;
import ome.security.auth.PasswordProvider;
import ome.security.auth.PasswordUtil;
import ome.services.mail.MailUtil;
import ome.system.OmeroContext;
import ome.system.Roles;
import ome.tools.hibernate.ExtendedMetadata;
import omero.cmd.admin.ResetPasswordRequestI;
import omero.cmd.basic.DoAllI;
import omero.cmd.basic.ListRequestsI;
import omero.cmd.basic.TimingI;
import omero.cmd.fs.ManageImageBinariesI;
import omero.cmd.fs.OriginalMetadataRequestI;
import omero.cmd.fs.UsedFilesRequestI;
import omero.cmd.graphs.Chgrp2I;
import omero.cmd.graphs.ChgrpFacadeI;
import omero.cmd.graphs.ChildOptionI;
import omero.cmd.graphs.Chmod2I;
import omero.cmd.graphs.ChmodFacadeI;
import omero.cmd.graphs.Chown2I;
import omero.cmd.graphs.ChownFacadeI;
import omero.cmd.graphs.Delete2I;
import omero.cmd.graphs.DeleteFacadeI;
import omero.cmd.graphs.DiskUsageI;
import omero.cmd.graphs.DuplicateI;
import omero.cmd.graphs.GraphRequestFactory;
import omero.cmd.graphs.LegalGraphTargetsI;
import omero.cmd.graphs.SkipHeadI;
import omero.cmd.mail.SendEmailRequestI;
/**
* SPI type picked up from the Spring configuration and given a chance to
* register all its {@link Ice.ObjectFactory} instances with the
* {@link Ice.Communicator}.
*
* @see <a href="http://trac.openmicroscopy.org/ome/ticket/6340">Trac ticket #6340</a>
*/
public class RequestObjectFactoryRegistry extends
omero.util.ObjectFactoryRegistry implements ApplicationContextAware {
private final ExtendedMetadata em;
private final ACLVoter voter;
private final Roles roles;
private final PixelsService pixelsService;
private final ThumbnailService thumbnailService;
private final MailUtil mailUtil;
private final PasswordUtil passwordUtil;
private final SecuritySystem sec;
private final PasswordProvider passwordProvider;
private final GraphRequestFactory graphRequestFactory;
private/* final */OmeroContext ctx;
public RequestObjectFactoryRegistry(ExtendedMetadata em,
ACLVoter voter,
Roles roles,
PixelsService pixelsService,
ThumbnailService thumbnailService,
MailUtil mailUtil,
PasswordUtil passwordUtil,
SecuritySystem sec,
PasswordProvider passwordProvider,
GraphRequestFactory graphRequestFactory) {
this.em = em;
this.voter = voter;
this.roles = roles;
this.pixelsService = pixelsService;
this.thumbnailService = thumbnailService;
this.mailUtil = mailUtil;
this.passwordUtil = passwordUtil;
this.sec = sec;
this.passwordProvider = passwordProvider;
this.graphRequestFactory = graphRequestFactory;
}
public void setApplicationContext(ApplicationContext ctx)
throws BeansException {
this.ctx = (OmeroContext) ctx;
}
public Map<String, ObjectFactory> createFactories(final Ice.Communicator ic) {
Map<String, ObjectFactory> factories = new HashMap<String, ObjectFactory>();
factories.put(TimingI.ice_staticId(), new ObjectFactory(
TimingI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new TimingI();
}
});
factories.put(DoAllI.ice_staticId(), new ObjectFactory(
DoAllI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new DoAllI(ctx);
}
});
factories.put(ListRequestsI.ice_staticId(), new ObjectFactory(
ListRequestsI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new ListRequestsI(ctx);
}
});
factories.put(Chgrp.ice_staticId(),
new ObjectFactory(Chgrp.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new ChgrpFacadeI(graphRequestFactory);
}
});
factories.put(Chgrp2I.ice_staticId(),
new ObjectFactory(Chgrp2I.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return graphRequestFactory.getRequest(Chgrp2I.class);
}
});
factories.put(Chmod.ice_staticId(),
new ObjectFactory(Chmod.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new ChmodFacadeI(graphRequestFactory);
}
});
factories.put(Chmod2I.ice_staticId(),
new ObjectFactory(Chmod2I.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return graphRequestFactory.getRequest(Chmod2I.class);
}
});
factories.put(Chown.ice_staticId(),
new ObjectFactory(Chown.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new ChownFacadeI(graphRequestFactory);
}
});
factories.put(Chown2I.ice_staticId(),
new ObjectFactory(Chown2I.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return graphRequestFactory.getRequest(Chown2I.class);
}
});
factories.put(Delete.ice_staticId(),
new ObjectFactory(Delete.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new DeleteFacadeI(graphRequestFactory);
}
});
factories.put(Delete2I.ice_staticId(),
new ObjectFactory(Delete2I.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return graphRequestFactory.getRequest(Delete2I.class);
}
});
factories.put(SkipHeadI.ice_staticId(),
new ObjectFactory(SkipHeadI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return graphRequestFactory.getRequest(SkipHeadI.class);
}
});
factories.put(LegalGraphTargetsI.ice_staticId(),
new ObjectFactory(LegalGraphTargetsI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new LegalGraphTargetsI(graphRequestFactory);
}
});
factories.put(OriginalMetadataRequestI.ice_staticId(),
new ObjectFactory(OriginalMetadataRequestI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new OriginalMetadataRequestI(pixelsService);
}
});
factories.put(UsedFilesRequestI.ice_staticId(),
new ObjectFactory(UsedFilesRequestI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new UsedFilesRequestI(pixelsService);
}
});
factories.put(ManageImageBinariesI.ice_staticId(),
new ObjectFactory(ManageImageBinariesI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new ManageImageBinariesI(pixelsService, voter);
}
});
factories.put(DiskUsageI.ice_staticId(),
new ObjectFactory(DiskUsageI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new DiskUsageI(pixelsService, thumbnailService, graphRequestFactory.getGraphPathBean());
}
});
factories.put(DuplicateI.ice_staticId(),
new ObjectFactory(DuplicateI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return graphRequestFactory.getRequest(DuplicateI.class);
}
});
factories.put(SendEmailRequestI.ice_staticId(),
new ObjectFactory(SendEmailRequestI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new SendEmailRequestI(mailUtil);
}
});
factories.put(ResetPasswordRequestI.ice_staticId(),
new ObjectFactory(ResetPasswordRequestI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return new ResetPasswordRequestI(mailUtil, passwordUtil, sec, passwordProvider);
}
});
/* request parameters */
factories.put(ChildOptionI.ice_staticId(),
new ObjectFactory(ChildOptionI.ice_staticId()) {
@Override
public Ice.Object create(String name) {
return graphRequestFactory.createChildOption();
}
});
return factories;
}
}