protected void visitExpressionIsTrashed(Expression node) { TrashService trashService = Framework.getService(TrashService.class); if (trashService.hasFeature(TRASHED_STATE_IS_DEDUCED_FROM_LIFECYCLE)) { visitExpressionIsTrashedOnLifeCycle(node); } else if (trashService.hasFeature(TRASHED_STATE_IN_MIGRATION)) { visitExpressionIsTrashedOnLifeCycle(node); buf.append(" OR "); visitExpressionWhereFalseMayBeNull(node); } else if (trashService.hasFeature(TRASHED_STATE_IS_DEDICATED_PROPERTY)) { visitExpressionWhereFalseMayBeNull(node); } else { throw new UnsupportedOperationException("TrashService is in an unknown state"); } }
protected Document walkIsTrashed(Operator op, Operand rvalue) { if (op != Operator.EQ && op != Operator.NOTEQ) { throw new QueryParseException(NXQL.ECM_ISTRASHED + " requires = or <> operator"); } TrashService trashService = Framework.getService(TrashService.class); if (trashService.hasFeature(TRASHED_STATE_IS_DEDUCED_FROM_LIFECYCLE)) { return walkIsTrashed(new Reference(NXQL.ECM_LIFECYCLESTATE), op, rvalue, new StringLiteral(LifeCycleConstants.DELETED_STATE)); } else if (trashService.hasFeature(TRASHED_STATE_IN_MIGRATION)) { Document lifeCycleTrashed = walkIsTrashed(new Reference(NXQL.ECM_LIFECYCLESTATE), op, rvalue, new StringLiteral(LifeCycleConstants.DELETED_STATE)); Document propertyTrashed = walkIsTrashed(new Reference(NXQL.ECM_ISTRASHED), op, rvalue, new BooleanLiteral(true)); return new Document(QueryOperators.OR, new ArrayList<>(Arrays.asList(lifeCycleTrashed, propertyTrashed))); } else if (trashService.hasFeature(TRASHED_STATE_IS_DEDICATED_PROPERTY)) { return walkIsTrashed(new Reference(NXQL.ECM_ISTRASHED), op, rvalue, new BooleanLiteral(true)); } else { throw new UnsupportedOperationException("TrashService is in an unknown state"); } }
if (trashService.hasFeature(TRASHED_STATE_IS_DEDICATED_PROPERTY) || trashService.hasFeature(TRASHED_STATE_IN_MIGRATION)) {
if (trashService.hasFeature(Feature.TRASHED_STATE_IS_DEDUCED_FROM_LIFECYCLE)) { filter = QueryBuilders.termQuery(NXQL.ECM_LIFECYCLESTATE, LifeCycleConstants.DELETED_STATE); } else if (trashService.hasFeature(Feature.TRASHED_STATE_IN_MIGRATION)) { filter = QueryBuilders.boolQuery() .should(QueryBuilders.termQuery(NXQL.ECM_LIFECYCLESTATE, LifeCycleConstants.DELETED_STATE)) .should(QueryBuilders.termQuery(name, true)); } else if (trashService.hasFeature(Feature.TRASHED_STATE_IS_DEDICATED_PROPERTY)) { filter = QueryBuilders.termQuery(name, true);
protected Boolean walkIsTrashed(Operator op, Operand rvalue) { if (op != Operator.EQ && op != Operator.NOTEQ) { throw new QueryParseException(NXQL.ECM_ISTRASHED + " requires = or <> operator"); } TrashService trashService = Framework.getService(TrashService.class); if (trashService.hasFeature(TRASHED_STATE_IS_DEDUCED_FROM_LIFECYCLE)) { return walkIsTrashed(new Reference(NXQL.ECM_LIFECYCLESTATE), op, rvalue, new StringLiteral(LifeCycleConstants.DELETED_STATE)); } else if (trashService.hasFeature(TRASHED_STATE_IN_MIGRATION)) { Boolean lifeCycleTrashed = walkIsTrashed(new Reference(NXQL.ECM_LIFECYCLESTATE), op, rvalue, new StringLiteral(LifeCycleConstants.DELETED_STATE)); Boolean propertyTrashed = walkIsTrashed(new Reference(NXQL.ECM_ISTRASHED), op, rvalue, new IntegerLiteral(1L)); return or(lifeCycleTrashed, propertyTrashed); } else if (trashService.hasFeature(TRASHED_STATE_IS_DEDICATED_PROPERTY)) { return walkIsTrashed(new Reference(NXQL.ECM_ISTRASHED), op, rvalue, new IntegerLiteral(1L)); } else { throw new UnsupportedOperationException("TrashService is in an unknown state"); } }
boolean deleteTransitions = LifeCycleConstants.DELETE_TRANSITION.equals(transition) || LifeCycleConstants.UNDELETE_TRANSITION.equals(transition); if (deleteTransitions && !trashService.hasFeature(TRASHED_STATE_IS_DEDUCED_FROM_LIFECYCLE) && !Boolean.TRUE.equals(options.get(FROM_LIFE_CYCLE_TRASH_SERVICE))) { String message = "Following the transition '" + transition + "' is deprecated. Please use TrashService.";