/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.tools.workbench.mappingsplugin.ui.descriptor; import javax.swing.ButtonModel; import javax.swing.JCheckBox; import javax.swing.text.Document; import org.eclipse.persistence.tools.workbench.framework.context.ApplicationContext; import org.eclipse.persistence.tools.workbench.framework.uitools.SwingComponentFactory; import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWMappingDescriptor; import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWTransactionalDescriptor; import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWTransactionalPolicy; import org.eclipse.persistence.tools.workbench.uitools.app.PropertyAspectAdapter; import org.eclipse.persistence.tools.workbench.uitools.app.PropertyValueModel; import org.eclipse.persistence.tools.workbench.uitools.app.ValueModel; import org.eclipse.persistence.tools.workbench.uitools.app.swing.CheckBoxModelAdapter; import org.eclipse.persistence.tools.workbench.uitools.app.swing.DocumentAdapter; public class TransactionalDescriptorComponentFactory extends SwingComponentFactory { // ************* read only ************ public static JCheckBox buildReadOnlyCheckBox(ValueModel transactionalDescriptorHolder, ApplicationContext context) { JCheckBox readOnlyCheckBox = buildCheckBox( "READ_ONLY_CHECKBOX_TEXT", buildReadOnlyCheckBoxModel(transactionalDescriptorHolder), context.getResourceRepository() ); context.getHelpManager().addTopicID(readOnlyCheckBox, "descriptor.transactional.readOnly"); return readOnlyCheckBox; } private static ButtonModel buildReadOnlyCheckBoxModel(ValueModel transactionalDescriptorHolder) { return new CheckBoxModelAdapter(buildReadOnlyAdapter(transactionalDescriptorHolder)); } private static PropertyValueModel buildReadOnlyAdapter(ValueModel transactionalDescriptorHolder) { return new PropertyAspectAdapter(transactionalDescriptorHolder, MWTransactionalPolicy.READ_ONLY_PROPERTY) { protected Object getValueFromSubject() { return Boolean.valueOf(((MWTransactionalDescriptor) subject).getTransactionalPolicy().isReadOnly()); } protected void setValueOnSubject(Object value) { ((MWTransactionalDescriptor) subject).getTransactionalPolicy().setReadOnly(((Boolean) value).booleanValue()); } }; } // **************** Conform Results In Unit of Work *********************** public static JCheckBox buildConformResultsInUnitOfWorkCheckBox(PropertyValueModel transactionalDescriptorHolder, ApplicationContext context) { JCheckBox checkBox = buildCheckBox( "CONFORM_RESULTS_CHECKBOX_TEXT", buildConformResultsInUnitOfWorkCheckBoxModel(transactionalDescriptorHolder), context.getResourceRepository() ); context.getHelpManager().addTopicID(checkBox, "descriptor.transactional.conform"); return checkBox; } private static ButtonModel buildConformResultsInUnitOfWorkCheckBoxModel(PropertyValueModel transactionalDescriptorHolder) { return new CheckBoxModelAdapter(buildConformResultsInUnitOfWorkAdapter(transactionalDescriptorHolder)); } private static PropertyValueModel buildConformResultsInUnitOfWorkAdapter(PropertyValueModel transactionalDescriptorHolder) { return new PropertyAspectAdapter(transactionalDescriptorHolder, MWTransactionalPolicy.CONFORM_RESULTS_IN_UNIT_OF_WORK_PROPERTY) { protected Object getValueFromSubject() { return Boolean.valueOf(((MWTransactionalDescriptor) subject).getTransactionalPolicy().isConformResultsInUnitOfWork()); } protected void setValueOnSubject(Object value) { ((MWTransactionalDescriptor) subject).getTransactionalPolicy().setConformResultsInUnitOfWork(((Boolean) value).booleanValue()); } }; } // **************** Refresh cache policy ********************************** // **************** (Must have a refresh cache policy to use this) ******** public static RefreshCachePolicyPanel buildRefreshCachePolicyPanel(PropertyValueModel transactionalDescriptorHolder, ApplicationContext context) { return new RefreshCachePolicyPanel(context, buildRefreshCachePolicyHolder(transactionalDescriptorHolder)); } // **************** Refresh cache policy ********************************** private static PropertyValueModel buildRefreshCachePolicyHolder(PropertyValueModel transactionalDescriptorHolder) { return new PropertyAspectAdapter(transactionalDescriptorHolder) { protected Object getValueFromSubject() { return ((MWTransactionalDescriptor) subject).getTransactionalPolicy().getRefreshCachePolicy(); } }; } // **************** Descriptor Alias ********************************** public static Document buildDescriptorAliasDocumentAdapter(ValueModel mappingDescriptorHolder) { return new DocumentAdapter(buildDescriptorAliasHolder(mappingDescriptorHolder)); } private static PropertyValueModel buildDescriptorAliasHolder(ValueModel mappingDescriptorHolder) { return new PropertyAspectAdapter(buildTransactionalPolicyHolder(mappingDescriptorHolder), MWTransactionalPolicy.DESCRIPTOR_ALIAS_PROPERTY) { protected Object getValueFromSubject() { return ((MWTransactionalPolicy) this.subject).getDescriptorAlias(); } protected void setValueOnSubject(Object value) { ((MWTransactionalPolicy) this.subject).setDescriptorAlias((String) value); } }; } private static PropertyValueModel buildTransactionalPolicyHolder(ValueModel mappingDescriptorHolder) { return new PropertyAspectAdapter(mappingDescriptorHolder) { protected Object getValueFromSubject() { return ((MWMappingDescriptor) this.subject).getTransactionalPolicy(); } }; } }