/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package Sirius.navigator.search; import Sirius.server.middleware.types.MetaObjectNode; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import java.util.ArrayList; import java.util.List; import de.cismet.cids.server.search.CidsServerSearch; import de.cismet.commons.gui.protocol.AbstractProtocolStep; import de.cismet.commons.gui.protocol.AbstractProtocolStepPanel; import de.cismet.commons.gui.protocol.ProtocolStepMetaInfo; /** * DOCUMENT ME! * * @author jruiz * @version $Revision$, $Date$ */ public class CidsServerSearchProtocolStepImpl extends AbstractProtocolStep implements CidsServerSearchProtocolStep { //~ Static fields/initializers --------------------------------------------- private static final ProtocolStepMetaInfo META_INFO = new ProtocolStepMetaInfo( "CidsSearch", "CidsSearch protocol step"); //~ Instance fields -------------------------------------------------------- @Getter @Setter @JsonIgnore private transient CidsServerSearchProtocolStepReexecutor reexecutor; @Getter @JsonIgnore private final transient CidsServerSearch search; @Getter @JsonIgnore private final transient List<MetaObjectNode> searchResultNodes; @Getter @JsonProperty(required = true) private List<CidsServerSearchMetaObjectNodeWrapper> searchResults; //~ Constructors ----------------------------------------------------------- /** * Creates a new CidsSearchProtocolStep object. * * @param searchResults DOCUMENT ME! */ @JsonCreator public CidsServerSearchProtocolStepImpl(final List<CidsServerSearchMetaObjectNodeWrapper> searchResults) { final List<MetaObjectNode> mons = new ArrayList<MetaObjectNode>(); for (final CidsServerSearchMetaObjectNodeWrapper result : searchResults) { mons.add(new MetaObjectNode( result.getDomain(), result.getObjectId(), result.getClassId(), result.getName(), null, null)); // TODO: Check4CashedGeomAndLightweightJson } this.searchResults = searchResults; this.searchResultNodes = mons; this.search = null; } /** * Creates a new CidsSearchProtocolStep object. * * @param search DOCUMENT ME! * @param resultNodes DOCUMENT ME! */ public CidsServerSearchProtocolStepImpl(final CidsServerSearch search, final List<MetaObjectNode> resultNodes) { this.search = search; this.searchResultNodes = resultNodes; } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! */ @Override public void reExecuteSearch() { if (getReexecutor() != null) { getReexecutor().reExecuteSearch(); } } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public boolean isReExecuteSearchEnabled() { if (getReexecutor() != null) { return getReexecutor().isReExecuteSearchEnabled(); } else { return false; } } @Override public void initParameters() { final List<CidsServerSearchMetaObjectNodeWrapper> searchResults = new ArrayList<CidsServerSearchMetaObjectNodeWrapper>(); for (final Object resultNode : searchResultNodes) { if (resultNode instanceof MetaObjectNode) { searchResults.add(new CidsServerSearchMetaObjectNodeWrapper((MetaObjectNode)resultNode)); } } this.searchResults = searchResults; } @Override protected ProtocolStepMetaInfo createMetaInfo() { return META_INFO; } @Override public AbstractProtocolStepPanel visualize() { return new CidsServerSearchProtocolStepPanel(this); } }