/** * Busca a form version entity associado ao documento da instância. * @return a entidade ou Option null caso nao encontre */ @Nonnull default Optional<FormEntity> findFormEntity(@Nonnull SInstance instance) { return findFormEntity(instance.getDocument()); }
/** * If instance have a Task Associated with it, returns it. * * @param x Instance where document contains task instance * @return Task if exists */ @Nonnull public static Optional<TaskInstance> getCurrentTaskEntity(@Nonnull SInstance instance) { return Optional.of(instance.getDocument().lookupLocalServiceOrException(ServerSInstanceFlowAwareService.class)) .map(ServerSInstanceFlowAwareService::getFlowInstance).flatMap(FlowInstance::getCurrentTask); }
/** * Retorna a {@link FormKey} do {@link SDocument} da instância, se o identificado * existir, ou dispara exception senão exisitr. */ @Nonnull public static FormKey from(@Nonnull SInstance instance) { return from(Objects.requireNonNull(instance).getDocument()); }
/** * If instance have a Task Associated with it, returns it. * * @param x Instance where document contains task instance * @return Task if exists */ @Nonnull public static Optional<TaskInstance> getCurrentTaskEntity(@Nonnull SInstance instance) { return Optional.of(instance.getDocument().lookupLocalServiceOrException(ServerSInstanceFlowAwareService.class)) .map(ServerSInstanceFlowAwareService::getFlowInstance).flatMap(FlowInstance::getCurrentTask); }
/** * Carrega na instance informada as anotação contidas no xml, fazendo * parser do mesmo antes. * * @param xmlAnnotations Se nulo, não faz carga */ @Deprecated public static void annotationLoadFromXml(SInstance instance, MElement xmlAnnotations) { annotationLoadFromXml(instance.getDocument(), xmlAnnotations); }
@Override public void onConfigure(Component component) { if (instanceModel.getObject() != null) { instanceModel.getObject().getDocument().updateAttributes(null); } } }
/** * Carrega na instance informada as anotação contidas no xml, fazendo * parser do mesmo antes. * * @param xmlAnnotations Se nulo, não faz carga */ @Deprecated public static void annotationLoadFromXml(SInstance instance, MElement xmlAnnotations) { annotationLoadFromXml(instance.getDocument(), xmlAnnotations); }
/** Retorna a {@link FormKey} do {@link SDocument} da instância, se o identificado existir. */ @Nonnull public static Optional<FormKey> fromOpt(@Nonnull SInstance instance) { return fromOpt(Objects.requireNonNull(instance).getDocument()); }
@Override @Nonnull public SInstance newTransientSInstance(@Nonnull FormKey key, @Nonnull RefType refType, @Nonnull SDocumentFactory documentFactory, @Nonnull Long versionId, boolean keepAnnotations) { SInstance instance = newTransientSInstance(key, refType, documentFactory, versionId); instance.getDocument().getDocumentAnnotations().clear(); return instance; }
private void assertCorrectDocumentReference(@Nonnull SInstance reference, @Nonnull SInstance target) { if (reference.getDocument() != target.getDocument()) { throw new AssertionError("Inconsitência Interna: O document da instancia '" + target.getPathFull() + "' não é o mesmo da instância '" + reference.getPathFull() + "'"); } target.forEachChild(child -> assertCorrectDocumentReference(reference, child)); }
@Override @Nonnull public SInstance newTransientSInstance(@Nonnull FormKey key, @Nonnull RefType refType, @Nonnull SDocumentFactory documentFactory, boolean keepAnnotations) { SInstance instance = newTransientSInstance(key, refType, documentFactory); instance.getDocument().getDocumentAnnotations().clear(); return instance; }
@Override public SInstance newTransientSInstance(FormKey key, RefType refType, SDocumentFactory documentFactory, boolean keepAnnotations) { SInstance instance = newTransientSInstance(key, refType, documentFactory); instance.getDocument().getDocumentAnnotations().clear(); return instance; }
@Override public SInstance newTransientSInstance(FormKey key, RefType refType, SDocumentFactory documentFactory, Long versionId, boolean keepAnnotations) { SInstance instance = newTransientSInstance(key, refType, documentFactory, versionId); instance.getDocument().getDocumentAnnotations().clear(); return instance; }
private static void defineFocusField(SInstance instance, FormSerialized fs) { if (instance.getDocument().getRoot() != instance) { fs.setFocusFieldPath(instance.getPathFromRoot()); } }
/** * Chamado durante deserialização para remover os listeners de um objeto */ public void detachEventCollector() { if (eventCollector != null) { this.getDocument().getInstanceListeners().remove(SInstanceEventType.values(), this.eventCollector); this.eventCollector = null; } }
/** * Executa as inicilização de atribuição de valor da instância (ver {@link SType#withInitListener(IConsumer)}). Pode * sobrepor valores preexistentes. */ public final void init() { //Não deve chamar o init se estiver no modo de leitura do XML if (getDocument().getLastId() != -1) { ((SType) getType()).init(() -> this); } }
/** * Executa as inicilização de atribuição de valor da instância (ver {@link SType#withInitListener(IConsumer)}). Pode * sobrepor valores preexistentes. */ @SuppressWarnings({ "unchecked", "rawtypes" }) public final void init() { //Não deve chamar o init se estiver no modo de leitura do XML if (!getDocument().isRestoreMode()) { ((SType) getType()).init(() -> this); } }
@Override @Nonnull protected SInstance createNewAttribute(@Nonnull AttrInternalRef ref) { SType<?> attributeType = AttributeValuesManagerForSType.getAttributeDefinedHierarchy(getOwner().getType(), ref); SInstance instanceAtr = attributeType.newInstance(getOwner().getDocument()); instanceAtr.setAsAttribute(ref, getOwner()); return instanceAtr; }
@Override public I get() { if (instance == null && fs != null) { instance = (I) FormSerializationUtil.toInstance(fs); instance.attachEventCollector(); /*esse chamada é necessária nesse ponto para atualizar os atributos de visibilidade após a deserialização uma * vez que estes não são persistenentes . Talvez a melhor alternativa seja persistir esses valores de atributos*/ instance.getDocument().updateAttributes(instance.getEventCollector()); fs = null; } return instance; }
@Nonnull private E addElementInternal(@Nonnull E instance, boolean atEnd, int index) { if (instance.getDocument() == getDocument()) { return addInternal(instance, atEnd, index); } else { E copy = getElementsType().newInstance(getDocument()); Value.copyValues(instance, copy); return addInternal(copy, atEnd, index); } }