package scs.demos.bigtable.servant; // teste git import java.util.ArrayList; import org.omg.PortableServer.POAPackage.ServantNotActive; import org.omg.PortableServer.POAPackage.WrongPolicy; import scs.core.FacetDescription; import scs.core.IReceptacles; import scs.core.IReceptaclesHelper; import scs.core.servant.IComponentServant; import scs.demos.bigtable.Config; import scs.demos.bigtable.ConfigHelper; import scs.demos.bigtable.Sorter; import scs.demos.bigtable.SorterHelper; import scs.demos.bigtable.servant.InfoServant; /** * Este componente oferece as facetas para sort do par chave/valor para * o seu reducer especifico, alem da interface de configuracao do proprio componente * @author hubert * */ public class BigTableComponent extends IComponentServant { private final static String IFACE_SORTER = "scs::demos::bigtable::Sorter"; private final static String FACET_SORTER = "Sorter"; private final static String IFACE_CONFIG = "scs::demos::bigtable::Config"; private final static String FACET_CONFIG = "Config"; private static final String FACET_INFO = "infoReceptacle"; private static final String IFACE_INFO = "scs::core::IReceptacles"; private SorterServant sorterServant = null; private Sorter sorter = null; private ConfigServant configServant = null; private Config config = null; private InfoServant infoServant = null; private IReceptacles info = null; @Override protected ArrayList<FacetDescription> createFacets() { ArrayList<FacetDescription> facets = new ArrayList<FacetDescription>(); FacetDescription fd = new FacetDescription(); fd.interface_name = IFACE_SORTER; fd.name = FACET_SORTER; fd.facet_ref = getSorter(); facets.add(fd); fd = new FacetDescription(); fd.interface_name = IFACE_CONFIG; fd.name = FACET_CONFIG; fd.facet_ref = getConfig(); facets.add(fd); fd = new FacetDescription(); fd.interface_name = IFACE_INFO; fd.name = FACET_INFO; fd.facet_ref = this.getInfo(); facets.add(fd); return facets; } @Override protected boolean doShutdown() { // TODO Auto-generated method stub return true; } @Override protected boolean doStartup() { // TODO Auto-generated method stub return true; } public IReceptacles getInfo() { this.infoServant = new InfoServant(); try { this.info = IReceptaclesHelper.narrow(this._poa() .servant_to_reference(this.infoServant)); } catch (ServantNotActive e) { e.printStackTrace(); } catch (WrongPolicy e) { e.printStackTrace(); } return this.info; } private Sorter getSorter() { if (this.sorterServant == null) { try { this.sorterServant = new SorterServant(this); this.sorter = SorterHelper.narrow(this._poa() .servant_to_reference(this.sorterServant)); } catch (ServantNotActive e) { e.printStackTrace(); } catch (WrongPolicy e) { e.printStackTrace(); } } return this.sorter; } private Config getConfig() { if (this.configServant == null) { try { this.configServant = new ConfigServant(this); this.config = ConfigHelper.narrow(this._poa() .servant_to_reference(this.configServant)); } catch (ServantNotActive e) { e.printStackTrace(); } catch (WrongPolicy e) { e.printStackTrace(); } } return this.config; } }