Return-Path: Delivered-To: apmail-incubator-cayenne-commits-archive@locus.apache.org Received: (qmail 37308 invoked from network); 28 May 2006 01:25:51 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 28 May 2006 01:25:51 -0000 Received: (qmail 79947 invoked by uid 500); 28 May 2006 01:25:51 -0000 Delivered-To: apmail-incubator-cayenne-commits-archive@incubator.apache.org Received: (qmail 79922 invoked by uid 500); 28 May 2006 01:25:50 -0000 Mailing-List: contact cayenne-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cayenne-dev@incubator.apache.org Delivered-To: mailing list cayenne-commits@incubator.apache.org Received: (qmail 79913 invoked by uid 99); 28 May 2006 01:25:50 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 27 May 2006 18:25:50 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 27 May 2006 18:25:49 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 8F1811A983A; Sat, 27 May 2006 18:25:29 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r409905 - in /incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler: dialog/datamap/LockingUpdateController.java dialog/datamap/LockingUpdateDialog.java editor/DataMapView.java Date: Sun, 28 May 2006 01:25:28 -0000 To: cayenne-commits@incubator.apache.org From: aadamchik@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060528012529.8F1811A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: aadamchik Date: Sat May 27 18:25:28 2006 New Revision: 409905 URL: http://svn.apache.org/viewvc?rev=409905&view=rev Log: CAY-363 Added: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateController.java incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateDialog.java Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/editor/DataMapView.java Added: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateController.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateController.java?rev=409905&view=auto ============================================================================== --- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateController.java (added) +++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateController.java Sat May 27 18:25:28 2006 @@ -0,0 +1,167 @@ +/* ==================================================================== + * + * The ObjectStyle Group Software License, version 1.1 + * ObjectStyle Group - http://objectstyle.org/ + * + * Copyright (c) 2002-2005, Andrei (Andrus) Adamchik and individual authors + * of the software. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if any, + * must include the following acknowlegement: + * "This product includes software developed by independent contributors + * and hosted on ObjectStyle Group web site (http://objectstyle.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse + * or promote products derived from this software without prior written + * permission. For written permission, email + * "andrus at objectstyle dot org". + * + * 5. Products derived from this software may not be called "ObjectStyle" + * or "Cayenne", nor may "ObjectStyle" or "Cayenne" appear in their + * names without prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals and hosted on ObjectStyle Group web site. For more + * information on the ObjectStyle Group, please see + * . + */ +package org.objectstyle.cayenne.modeler.dialog.datamap; + +import java.awt.Component; +import java.util.Iterator; + +import org.objectstyle.cayenne.map.DataMap; +import org.objectstyle.cayenne.map.ObjAttribute; +import org.objectstyle.cayenne.map.ObjEntity; +import org.objectstyle.cayenne.map.ObjRelationship; +import org.objectstyle.cayenne.map.event.AttributeEvent; +import org.objectstyle.cayenne.map.event.EntityEvent; +import org.objectstyle.cayenne.map.event.RelationshipEvent; +import org.objectstyle.cayenne.modeler.ProjectController; +import org.objectstyle.cayenne.modeler.util.CayenneController; +import org.objectstyle.cayenne.swing.BindingBuilder; + +public class LockingUpdateController extends CayenneController { + + protected LockingUpdateDialog view; + protected DataMap dataMap; + + public LockingUpdateController(ProjectController parent, DataMap dataMap) { + super(parent); + this.dataMap = dataMap; + } + + public void startup() { + + view = new LockingUpdateDialog(); + + boolean on = dataMap.getDefaultLockType() == ObjEntity.LOCK_TYPE_OPTIMISTIC; + view.setTitle(on ? "Enable Optimistic Locking" : "Disable Optimistic Locking"); + + initBindings(); + + view.pack(); + view.setModal(true); + centerView(); + makeCloseableOnEscape(); + view.show(); + } + + public Component getView() { + return view; + } + + protected void initBindings() { + BindingBuilder builder = new BindingBuilder( + getApplication().getBindingFactory(), + this); + + builder.bindToAction(view.getCancelButton(), "cancelAction()"); + builder.bindToAction(view.getUpdateButton(), "updateAction()"); + } + + public void cancelAction() { + if (view != null) { + view.dispose(); + } + } + + public void updateAction() { + int defaultLockType = dataMap.getDefaultLockType(); + boolean on = defaultLockType == ObjEntity.LOCK_TYPE_OPTIMISTIC; + + boolean updateEntities = view.getEntities().isSelected(); + boolean updateAttributes = view.getAttributes().isSelected(); + boolean updateRelationships = view.getRelationships().isSelected(); + ProjectController parent = (ProjectController) getParent(); + + Iterator it = dataMap.getObjEntities().iterator(); + while (it.hasNext()) { + ObjEntity entity = (ObjEntity) it.next(); + + if (updateEntities && defaultLockType != entity.getDeclaredLockType()) { + entity.setDeclaredLockType(defaultLockType); + parent.fireObjEntityEvent(new EntityEvent(this, entity)); + } + + if (updateAttributes) { + Iterator attributes = entity.getAttributes().iterator(); + while (attributes.hasNext()) { + + ObjAttribute a = (ObjAttribute) attributes.next(); + if (a.isUsedForLocking() != on) { + a.setUsedForLocking(on); + parent.fireObjAttributeEvent(new AttributeEvent(this, a, entity)); + } + } + } + + if (updateRelationships) { + Iterator relationships = entity.getRelationships().iterator(); + while (relationships.hasNext()) { + + ObjRelationship r = (ObjRelationship) relationships.next(); + if (r.isUsedForLocking() != on) { + r.setUsedForLocking(on); + parent.fireObjRelationshipEvent(new RelationshipEvent( + this, + r, + entity)); + } + } + } + } + + if (view != null) { + view.dispose(); + } + } +} Added: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateDialog.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateDialog.java?rev=409905&view=auto ============================================================================== --- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateDialog.java (added) +++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/dialog/datamap/LockingUpdateDialog.java Sat May 27 18:25:28 2006 @@ -0,0 +1,136 @@ +/* ==================================================================== + * + * The ObjectStyle Group Software License, version 1.1 + * ObjectStyle Group - http://objectstyle.org/ + * + * Copyright (c) 2002-2005, Andrei (Andrus) Adamchik and individual authors + * of the software. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if any, + * must include the following acknowlegement: + * "This product includes software developed by independent contributors + * and hosted on ObjectStyle Group web site (http://objectstyle.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse + * or promote products derived from this software without prior written + * permission. For written permission, email + * "andrus at objectstyle dot org". + * + * 5. Products derived from this software may not be called "ObjectStyle" + * or "Cayenne", nor may "ObjectStyle" or "Cayenne" appear in their + * names without prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals and hosted on ObjectStyle Group web site. For more + * information on the ObjectStyle Group, please see + * . + */ +package org.objectstyle.cayenne.modeler.dialog.datamap; + +import java.awt.BorderLayout; +import java.awt.Container; +import java.awt.FlowLayout; + +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JDialog; +import javax.swing.JPanel; + +import com.jgoodies.forms.builder.PanelBuilder; +import com.jgoodies.forms.layout.CellConstraints; +import com.jgoodies.forms.layout.FormLayout; + +public class LockingUpdateDialog extends JDialog { + + protected JCheckBox entities; + protected JCheckBox attributes; + protected JCheckBox relationships; + + protected JButton cancelButton; + protected JButton updateButton; + + public LockingUpdateDialog() { + + this.entities = new JCheckBox("Update all Entities"); + this.attributes = new JCheckBox("Update all Attributes"); + this.relationships = new JCheckBox("Update all Relationships"); + + this.cancelButton = new JButton("Cancel"); + this.updateButton = new JButton("Update"); + + // check all by default until we start storing this in preferences. + entities.setSelected(true); + attributes.setSelected(true); + relationships.setSelected(true); + + // do layout... + + CellConstraints cc = new CellConstraints(); + FormLayout layout = new FormLayout( + "left:max(180dlu;pref)", + "p, 3dlu, p, 3dlu, p, 3dlu"); + PanelBuilder builder = new PanelBuilder(layout); + builder.setDefaultDialogBorder(); + + builder.add(entities, cc.xy(1, 1)); + builder.add(attributes, cc.xy(1, 3)); + builder.add(relationships, cc.xy(1, 5)); + + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + buttonPanel.add(updateButton); + buttonPanel.add(cancelButton); + + Container contentPane = getContentPane(); + contentPane.setLayout(new BorderLayout()); + contentPane.add(builder.getPanel(), BorderLayout.CENTER); + contentPane.add(buttonPanel, BorderLayout.SOUTH); + } + + public JButton getCancelButton() { + return cancelButton; + } + + public JButton getUpdateButton() { + return updateButton; + } + + public JCheckBox getAttributes() { + return attributes; + } + + public JCheckBox getEntities() { + return entities; + } + + public JCheckBox getRelationships() { + return relationships; + } +} Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/editor/DataMapView.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/editor/DataMapView.java?rev=409905&r1=409904&r2=409905&view=diff ============================================================================== --- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/editor/DataMapView.java (original) +++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/modeler/java/org/objectstyle/cayenne/modeler/editor/DataMapView.java Sat May 27 18:25:28 2006 @@ -76,9 +76,9 @@ import org.objectstyle.cayenne.map.ObjEntity; import org.objectstyle.cayenne.map.event.DataMapEvent; import org.objectstyle.cayenne.map.event.DataNodeEvent; -import org.objectstyle.cayenne.map.event.EntityEvent; import org.objectstyle.cayenne.modeler.Application; import org.objectstyle.cayenne.modeler.ProjectController; +import org.objectstyle.cayenne.modeler.dialog.datamap.LockingUpdateController; import org.objectstyle.cayenne.modeler.dialog.datamap.PackageUpdateController; import org.objectstyle.cayenne.modeler.dialog.datamap.SchemaUpdateController; import org.objectstyle.cayenne.modeler.dialog.datamap.SuperclassUpdateController; @@ -168,7 +168,7 @@ } }; - updateDefaultLockType = new JButton("Update"); + updateDefaultLockType = new JButton("Update..."); defaultLockType = new JCheckBox(); clientSupport = new JCheckBox(); @@ -607,19 +607,7 @@ } if (dataMap.getObjEntities().size() > 0) { - int defaultLockType = dataMap.getDefaultLockType(); - - Iterator it = dataMap.getObjEntities().iterator(); - while (it.hasNext()) { - ObjEntity entity = (ObjEntity) it.next(); - if (defaultLockType != entity.getDeclaredLockType()) { - entity.setDeclaredLockType(defaultLockType); - - // any way to batch events, a big change will flood the app with - // entity events..? - eventController.fireDbEntityEvent(new EntityEvent(this, entity)); - } - } + new LockingUpdateController(eventController, dataMap).startup(); } } }