List of usage examples for com.google.common.base Optional equals
@Override public abstract boolean equals(@Nullable Object object);
From source file:org.locationtech.geogig.api.plumbing.merge.MergeFeaturesOp.java
@SuppressWarnings("unchecked") private Feature merge(RevFeature featureA, RevFeature featureB, RevFeature ancestor, RevFeatureType featureType) {/*from w w w .j a v a 2 s.c o m*/ SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder((SimpleFeatureType) featureType.type()); ImmutableList<Optional<Object>> valuesA = featureA.getValues(); ImmutableList<Optional<Object>> valuesB = featureB.getValues(); ImmutableList<Optional<Object>> valuesAncestor = ancestor.getValues(); ImmutableList<PropertyDescriptor> descriptors = featureType.sortedDescriptors(); for (int i = 0; i < descriptors.size(); i++) { PropertyDescriptor descriptor = descriptors.get(i); boolean isGeom = Geometry.class.isAssignableFrom(descriptor.getType().getBinding()); Name name = descriptor.getName(); Optional<Object> valueAncestor = valuesAncestor.get(i); Optional<Object> valueA = valuesA.get(i); Optional<Object> valueB = valuesB.get(i); if (!valueA.equals(valueAncestor)) { Optional<Object> merged = valueA; if (isGeom && !valueB.equals(valueAncestor)) { // true merge is only done with // geometries GeometryAttributeDiff diffB = new GeometryAttributeDiff( Optional.fromNullable((Geometry) valueAncestor.orNull()), Optional.fromNullable((Geometry) valueB.orNull())); merged = (Optional<Object>) diffB.applyOn(valueA); } featureBuilder.set(name, merged.orNull()); } else { featureBuilder.set(name, valueB.orNull()); } } return featureBuilder.buildFeature(nodeRefA.name()); }
From source file:org.geogit.api.plumbing.diff.GeometryAttributeDiff.java
@Override public boolean canBeAppliedOn(Optional<?> obj) { switch (type) { case ADDED:/*ww w. j a va2 s . c o m*/ return obj == null; case REMOVED: return obj.equals(oldGeometry); case MODIFIED: default: return diff.canBeAppliedOn((Optional<Geometry>) obj); } }
From source file:org.locationtech.geogig.api.plumbing.diff.GeometryAttributeDiff.java
@SuppressWarnings("unchecked") @Override/* ww w . j a v a 2 s. c o m*/ public boolean canBeAppliedOn(Optional<?> obj) { switch (type) { case ADDED: return obj == null; case REMOVED: return obj.equals(oldGeometry); case MODIFIED: default: return diff.canBeAppliedOn((Optional<Geometry>) obj); } }
From source file:com.github.rinde.logistics.pdptw.mas.route.GotoClosestRoutePlanner.java
private void updateCurrent() { final Optional<Parcel> prev = current; if (parcels.isEmpty()) { current = Optional.absent(); } else {//w ww. j a v a 2 s . c o m current = Optional.of(Collections.min(parcels, comp)); } if (!prev.equals(current)) { dispatchChangeEvent(); } }
From source file:org.apache.aurora.scheduler.http.LeaderRedirect.java
/** * Gets the current status of the elected leader. * * @return a {@code LeaderStatus} indicating whether there is an elected leader (and if so, if * this instance is the leader).//from ww w. j a v a 2s .c om */ LeaderStatus getLeaderStatus() { Optional<ServiceInstance> leadingScheduler = getLeader(); if (!leadingScheduler.isPresent()) { return LeaderStatus.NO_LEADER; } if (!leadingScheduler.get().isSetServiceEndpoint()) { LOG.warn("Leader service instance seems to be incomplete: " + leadingScheduler); return LeaderStatus.NO_LEADER; } Optional<HostAndPort> leaderHttp = getLeaderHttp(); Optional<HostAndPort> localHttp = getLocalHttp(); if (leaderHttp.isPresent() && leaderHttp.equals(localHttp)) { return LeaderStatus.LEADING; } return LeaderStatus.NOT_LEADING; }
From source file:org.apache.aurora.scheduler.http.LeaderRedirect.java
/** * Gets the optional HTTP endpoint that should be redirected to in the event that this * scheduler is not the leader.//w w w. j a va2 s .c om * * @return Optional redirect target. */ @VisibleForTesting Optional<HostAndPort> getRedirect() { Optional<HostAndPort> leaderHttp = getLeaderHttp(); Optional<HostAndPort> localHttp = getLocalHttp(); if (leaderHttp.isPresent()) { if (leaderHttp.equals(localHttp)) { return Optional.absent(); } else { return leaderHttp; } } else { LOG.info("No leader found, not redirecting."); return Optional.absent(); } }
From source file:org.apache.aurora.scheduler.TaskVars.java
@Subscribe public void taskChangedState(TaskStateChange stateChange) { IScheduledTask task = stateChange.getTask(); Optional<ScheduleStatus> previousState = stateChange.getOldState(); if (stateChange.isTransition() && !previousState.equals(Optional.of(ScheduleStatus.INIT))) { decrementCount(previousState.get()); }//from w w w. jav a 2 s . c o m incrementCount(task.getStatus()); updateRackCounters(task, task.getStatus()); updateJobCounters(task, task.getStatus()); }
From source file:org.geogit.api.plumbing.diff.TreeDifference.java
/** * Finds tree pointers that point to the same tree (path and object id) on the left and right * sides of the comparison but have different {@link NodeRef#getMetadataId() metadata ids} *///from www . j a v a 2 s . c om public Map<NodeRef, NodeRef> findPureMetadataChanges() { SortedMap<String, MutableTree> leftEntries = leftTree.getChildrenAsMap(); SortedMap<String, MutableTree> rightEntries = rightTree.getChildrenAsMap(); Map<NodeRef, NodeRef> matches = Maps.newTreeMap(); for (Map.Entry<String, MutableTree> e : leftEntries.entrySet()) { final String nodePath = e.getKey(); final MutableTree leftTree = e.getValue(); final Node leftNode = leftTree.getNode(); @Nullable final MutableTree rightTree = rightEntries.get(nodePath); final Node rightNode = rightTree == null ? null : rightTree.getNode(); if (leftNode.equals(rightNode)) { final Optional<ObjectId> leftMetadata = leftNode.getMetadataId(); final Optional<ObjectId> rightMetadata = rightNode.getMetadataId(); if (!leftMetadata.equals(rightMetadata)) { String parentPath = NodeRef.parentPath(nodePath); NodeRef leftRef = new NodeRef(leftNode, parentPath, ObjectId.NULL); NodeRef rightRef = new NodeRef(rightNode, parentPath, ObjectId.NULL); matches.put(leftRef, rightRef); } } } return matches; }
From source file:org.locationtech.geogig.api.plumbing.merge.ReportCommitConflictsOp.java
@Override protected MergeScenarioReport _call() { MergeScenarioReport report = new MergeScenarioReport(); ObjectId parentCommitId = ObjectId.NULL; if (commit.getParentIds().size() > 0) { parentCommitId = commit.getParentIds().get(0); }/* ww w. j a v a2 s . c o m*/ ObjectId parentTreeId = ObjectId.NULL; Repository repository = repository(); if (repository.commitExists(parentCommitId)) { parentTreeId = repository.getCommit(parentCommitId).getTreeId(); } // get changes Iterator<DiffEntry> diffs = command(DiffTree.class).setOldTree(parentTreeId).setNewTree(commit.getTreeId()) .setReportTrees(true).call(); while (diffs.hasNext()) { DiffEntry diff = diffs.next(); String path = diff.oldPath() == null ? diff.newPath() : diff.oldPath(); Optional<RevObject> obj = command(RevObjectParse.class).setRefSpec(Ref.HEAD + ":" + path).call(); switch (diff.changeType()) { case ADDED: if (obj.isPresent()) { TYPE type = command(ResolveObjectType.class).setObjectId(diff.getNewObject().objectId()).call(); if (TYPE.TREE.equals(type)) { NodeRef headVersion = command(FindTreeChild.class).setChildPath(path) .setParent(repository.getOrCreateHeadTree()).call().get(); if (!headVersion.getMetadataId().equals(diff.getNewObject().getMetadataId())) { report.addConflict(new Conflict(path, ObjectId.NULL, diff.getNewObject().getMetadataId(), headVersion.getMetadataId())); } } else { if (!obj.get().getId().equals(diff.newObjectId())) { report.addConflict( new Conflict(path, ObjectId.NULL, diff.newObjectId(), obj.get().getId())); } } } else { report.addUnconflicted(diff); } break; case REMOVED: if (obj.isPresent()) { if (obj.get().getId().equals(diff.oldObjectId())) { report.addUnconflicted(diff); } else { report.addConflict( new Conflict(path, diff.oldObjectId(), ObjectId.NULL, obj.get().getId())); } } break; case MODIFIED: TYPE type = command(ResolveObjectType.class).setObjectId(diff.getNewObject().objectId()).call(); if (TYPE.TREE.equals(type)) { // TODO:see how to do this. For now, we will pass any change as a conflicted // one if (!diff.isChange()) { report.addUnconflicted(diff); } } else { String refSpec = Ref.HEAD + ":" + path; obj = command(RevObjectParse.class).setRefSpec(refSpec).call(); if (!obj.isPresent()) { // git reports this as a conflict but does not mark as conflicted, just adds // the missing file. // We add it and consider it unconflicted report.addUnconflicted(diff); break; } RevFeature feature = (RevFeature) obj.get(); DepthSearch depthSearch = new DepthSearch(repository.objectDatabase()); Optional<NodeRef> noderef = depthSearch.find(this.workingTree().getTree(), path); RevFeatureType featureType = command(RevObjectParse.class) .setObjectId(noderef.get().getMetadataId()).call(RevFeatureType.class).get(); ImmutableList<PropertyDescriptor> descriptors = featureType.sortedDescriptors(); FeatureDiff featureDiff = command(DiffFeature.class) .setOldVersion(Suppliers.ofInstance(diff.getOldObject())) .setNewVersion(Suppliers.ofInstance(diff.getNewObject())).call(); Set<Entry<PropertyDescriptor, AttributeDiff>> attrDiffs = featureDiff.getDiffs().entrySet(); RevFeature newFeature = command(RevObjectParse.class).setObjectId(diff.newObjectId()) .call(RevFeature.class).get(); boolean ok = true; for (Iterator<Entry<PropertyDescriptor, AttributeDiff>> iterator = attrDiffs .iterator(); iterator.hasNext() && ok;) { Entry<PropertyDescriptor, AttributeDiff> entry = iterator.next(); AttributeDiff attrDiff = entry.getValue(); PropertyDescriptor descriptor = entry.getKey(); switch (attrDiff.getType()) { case ADDED: if (descriptors.contains(descriptor)) { ok = false; } break; case REMOVED: case MODIFIED: if (!descriptors.contains(descriptor)) { ok = false; break; } for (int i = 0; i < descriptors.size(); i++) { if (descriptors.get(i).equals(descriptor)) { Optional<Object> value = feature.getValues().get(i); Optional<Object> newValue = newFeature.getValues().get(i); if (!newValue.equals(value)) { // if it's going to end up // setting the same value, it is // compatible, so no need to // check if (!attrDiff.canBeAppliedOn(value)) { ok = false; } break; } } } } } if (ok) { report.addUnconflicted(diff); } else { report.addConflict( new Conflict(path, diff.oldObjectId(), diff.newObjectId(), obj.get().getId())); } } break; } } return report; }
From source file:org.opendaylight.yangtools.yang.data.impl.schema.tree.ModifiedNode.java
TreeNode getValidatedNode(final SchemaAwareApplyOperation op, final Optional<TreeNode> current) { return op.equals(validatedOp) && current.equals(validatedCurrent) ? validatedNode : null; }