/* * Copyright 2010 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.core.common; import org.drools.core.WorkingMemoryEntryPoint; import org.drools.core.factmodel.traits.TraitTypeEnum; import org.drools.core.reteoo.LeftTuple; import org.drools.core.reteoo.RightTuple; import org.drools.core.spi.Tuple; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import java.util.Arrays; import java.util.function.Consumer; import java.util.function.Predicate; @XmlAccessorType(XmlAccessType.NONE) public class QueryElementFactHandle implements InternalFactHandle { private Object object; private int id; private int identityHashCode; private long recency; private boolean negated; protected QueryElementFactHandle() {} public QueryElementFactHandle(Object object, int id, long recency) { this( object, id, DefaultFactHandle.determineIdentityHashCode( object ), recency ); } public QueryElementFactHandle(Object object, int id, int identityHashCode, long recency) { this.object = object; this.id = id; this.recency = recency; this.identityHashCode = identityHashCode; } @Override public boolean isNegated() { return negated; } @Override public void setNegated(boolean negated) { this.negated = negated; } public int getId() { return this.id; } public int getIdentityHashCode() { return this.identityHashCode; } public int getObjectHashCode() { return this.object.hashCode(); } public long getRecency() { return this.recency; } public LeftTuple getLastLeftTuple() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public Object getObject() { if ( this.object != null ) { return this.object; } throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public String getObjectClassName() { return this.object != null ? object.getClass().getName() : null; } public void setObject(Object object) { this.object = object; } public WorkingMemoryEntryPoint getEntryPoint() { return null; //throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" ); } public EqualityKey getEqualityKey() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public RightTuple getRightTuple() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void invalidate() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public boolean isEvent() { return false; } public boolean isTraitOrTraitable() { return false; } public boolean isTraitable() { return false; } public boolean isTraiting() { return false; } public TraitTypeEnum getTraitType() { return TraitTypeEnum.NON_TRAIT; } public boolean isValid() { return true; } public void setEntryPoint(WorkingMemoryEntryPoint ep ) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void setEqualityKey(EqualityKey key) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void setFirstLeftTuple(LeftTuple leftTuple) { } @Override public LinkedTuples getLinkedTuples() { return null; } @Override public LinkedTuples detachLinkedTuples() { return null; } @Override public LinkedTuples detachLinkedTuplesForPartition(int i) { return null; } public void setLastLeftTuple(LeftTuple leftTuple) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void setRecency(long recency) { this.recency = recency; } public void setRightTuple(RightTuple rightTuple) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public InternalFactHandle clone() { return new QueryElementFactHandle( object, id, identityHashCode, recency ); } public String toExternalForm() { return "QueryElementFactHandl: " + this.object; } @XmlAttribute(name="external-form") public String getExternalForm() { return toExternalForm(); } public LeftTuple getFirstLeftTuple() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public RightTuple getFirstRightTuple() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public RightTuple getLastRightTuple() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public String toTupleTree(int indent) { return null; } public boolean isDisconnected() { return true; } public String toString() { return "results: " + Arrays.asList( (Object[]) this.object ).toString(); } public void disconnect() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void addFirstLeftTuple(LeftTuple leftTuple) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void addLastLeftTuple( LeftTuple leftTuple ) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void removeLeftTuple( LeftTuple leftTuple ) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void clearLeftTuples() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void clearRightTuples() { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void addFirstRightTuple( RightTuple rightTuple ) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void addLastRightTuple( RightTuple rightTuple ) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void addTupleInPosition( Tuple rightTuple ) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } public void removeRightTuple( RightTuple rightTuple ) { throw new UnsupportedOperationException( "QueryElementFactHandle does not support this method" ); } @Override public <K> K as( Class<K> klass ) throws ClassCastException { throw new UnsupportedOperationException( "QueryElementFactHandle does not yet support this method" ); } @Override public boolean isExpired() { return false; } @Override public boolean isPendingRemoveFromStore() { return false; } public void forEachRightTuple( Consumer<RightTuple> rightTupleConsumer ) { } @Override public void forEachLeftTuple( Consumer<LeftTuple> leftTupleConsumer ) { } @Override public RightTuple findFirstRightTuple( Predicate<RightTuple> rightTuplePredicate ) { return null; } @Override public LeftTuple findFirstLeftTuple( Predicate<LeftTuple> lefttTuplePredicate ) { return null; } }