Author: vyemialyanchyk
Date: 2009-10-22 09:18:51 -0400 (Thu, 22 Oct 2009)
New Revision: 18237
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/DiagramViewerMessages.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/DiagramViewerMessages.properties
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/DiagramViewer.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/model/MessageShape.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/model/OrmDiagram.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OpenDiagramActionDelegate.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OrmLabelProvider.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5054 - fix: enhance exceptions handle
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/DiagramViewerMessages.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/DiagramViewerMessages.java 2009-10-22
13:18:41 UTC (rev 18236)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/DiagramViewerMessages.java 2009-10-22
13:18:51 UTC (rev 18237)
@@ -58,4 +58,7 @@
public static String ToggleAssociationAction_associations;
public static String ToggleForeignKeyConstraintAction_foreign_key_constraints;
public static String MessageShape_warning;
+ public static String Diagram_incorrect_state;
+ public static String Diagram_no_items_or_incorrect_state;
+ public static String OpenDiagramActionDelegate_could_not_load_configuration;
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/DiagramViewerMessages.properties
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/DiagramViewerMessages.properties 2009-10-22
13:18:41 UTC (rev 18236)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/DiagramViewerMessages.properties 2009-10-22
13:18:51 UTC (rev 18237)
@@ -33,4 +33,7 @@
TogglePropertyMappingAction_property_mappings=Property Mappings
ToggleAssociationAction_associations=Associations
ToggleForeignKeyConstraintAction_foreign_key_constraints=Foreign key constraints
-MessageShape_warning=Hibernate Console Configuration is not loaded cause Hibernate
plugins are not active. To activate Open Hibernate Configurations view and press refresh
button.
\ No newline at end of file
+MessageShape_warning=Hibernate Console Configuration is not loaded cause Hibernate
plugins are not active. To activate Open Hibernate Configurations view and press refresh
button.
+Diagram_incorrect_state=incorrect Hibernate Console Configuration state.
+Diagram_no_items_or_incorrect_state=no items or incorrect Hibernate Console Configuration
state.
+OpenDiagramActionDelegate_could_not_load_configuration=Could not load configuration
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/DiagramViewer.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/DiagramViewer.java 2009-10-22
13:18:41 UTC (rev 18236)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/DiagramViewer.java 2009-10-22
13:18:51 UTC (rev 18237)
@@ -18,8 +18,6 @@
import java.util.List;
import java.util.Set;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.draw2d.PositionConstants;
@@ -118,14 +116,12 @@
return;
}
saveProperties();
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IPath pathTmp = workspace.getRoot().getFullPath().append(pathSave);
- pathTmp = workspace.getRoot().getLocation().append(pathTmp);
+ IPath pathTmp = pathSave;
String ext = pathSave.getFileExtension();
if (ext == null) {
pathTmp = pathTmp.addFileExtension("hibernate"); //$NON-NLS-1$
}
- getOrmDiagram().saveInFile(pathTmp, true);
+ getOrmDiagram().saveInWorkspaceFile(pathTmp, true);
getOrmDiagram().setDirty(false);
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/model/MessageShape.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/model/MessageShape.java 2009-10-22
13:18:41 UTC (rev 18236)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/model/MessageShape.java 2009-10-22
13:18:51 UTC (rev 18237)
@@ -10,16 +10,14 @@
******************************************************************************/
package org.jboss.tools.hibernate.ui.diagram.editors.model;
-import org.jboss.tools.hibernate.ui.diagram.DiagramViewerMessages;
-
/**
*
* author: Vitali Yemialyanchyk
*/
public class MessageShape extends OrmShape {
- protected MessageShape() {
- super(DiagramViewerMessages.MessageShape_warning);
+ protected MessageShape(String error) {
+ super(error);
}
@Override
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/model/OrmDiagram.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/model/OrmDiagram.java 2009-10-22
13:18:41 UTC (rev 18236)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/diagram/editors/model/OrmDiagram.java 2009-10-22
13:18:51 UTC (rev 18237)
@@ -11,6 +11,8 @@
package org.jboss.tools.hibernate.ui.diagram.editors.model;
import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -18,6 +20,7 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
+import java.io.StringWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
@@ -41,6 +44,7 @@
import org.eclipse.ui.IMemento;
import org.eclipse.ui.WorkbenchException;
import org.eclipse.ui.XMLMemento;
+import org.hibernate.HibernateException;
import org.hibernate.cfg.Configuration;
import org.hibernate.console.ConsoleConfiguration;
import org.hibernate.console.KnownConfigurations;
@@ -48,6 +52,7 @@
import org.hibernate.eclipse.console.HibernateConsolePlugin;
import org.hibernate.eclipse.console.utils.ProjectUtils;
import org.hibernate.mapping.RootClass;
+import org.jboss.tools.hibernate.ui.diagram.DiagramViewerMessages;
import org.jboss.tools.hibernate.ui.diagram.UiPlugin;
import org.jboss.tools.hibernate.ui.diagram.editors.model.Connection.ConnectionType;
import org.jboss.tools.hibernate.ui.diagram.rulers.DiagramRuler;
@@ -169,8 +174,10 @@
deleteChildren();
elements.clear();
connections.clear();
+ StringBuilder errorMessage = new StringBuilder();
+ Configuration config = getConfig(errorMessage);
final ElementsFactory factory = new ElementsFactory(
- getConfig(), elements, connections);
+ config, elements, connections);
for (int i = 0; i < roots.size(); i++) {
RootClass rc = roots.get(i);
if (rc != null) {
@@ -181,7 +188,18 @@
factory.createChildren(this);
updateChildrenList();
if (getChildrenNumber() == 0) {
- addChild(new MessageShape());
+ String error = DiagramViewerMessages.MessageShape_warning;
+ if (config != null) {
+ if (consoleConfigName != null && consoleConfigName.length() > 0) {
+ error = consoleConfigName;
+ error += ": "; //$NON-NLS-1$
+ error += DiagramViewerMessages.Diagram_no_items_or_incorrect_state;
+ }
+ }
+ if (errorMessage.length() > 0) {
+ error = errorMessage.toString();
+ }
+ addChild(new MessageShape(error));
}
}
@@ -557,6 +575,44 @@
super.saveInProperties(properties);
}
+ public void saveInWorkspaceFile(IPath path, boolean format) {
+ final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+ if (file.exists()) {
+ try {
+ file.delete(true, null);
+ } catch (CoreException e) {
+ HibernateConsolePlugin.getDefault().logErrorMessage("Can't delete
file.", e); //$NON-NLS-1$
+ }
+ }
+ if (file.exists()) {
+ return;
+ }
+ byte[] arrSave = new byte[0];
+ try {
+ if (format) {
+ XMLMemento memento = XMLMemento.createWriteRoot("OrmDiagram");
//$NON-NLS-1$
+ saveState(memento);
+ StringWriter strWriter = new StringWriter();
+ memento.save(strWriter);
+ arrSave = strWriter.toString().getBytes();
+ } else {
+ Properties properties = new Properties();
+ saveInProperties(properties);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ properties.store(baos, ""); //$NON-NLS-1$
+ arrSave = baos.toByteArray();
+ }
+ } catch (IOException e) {
+ HibernateConsolePlugin.getDefault().logErrorMessage("Can't save layout of
mapping.", e); //$NON-NLS-1$
+ }
+ ByteArrayInputStream inputStream = new ByteArrayInputStream(arrSave);
+ try {
+ file.create(inputStream, true, null);
+ } catch (CoreException e) {
+ HibernateConsolePlugin.getDefault().logErrorMessage("Can't save layout of
mapping.", e); //$NON-NLS-1$
+ }
+ }
+
public void saveInFile(IPath path, boolean format) {
FileOutputStream fos = null;
try {
@@ -677,11 +733,30 @@
}
protected Configuration getConfig() {
+ return getConfig(null);
+ }
+
+ protected Configuration getConfig(StringBuilder error) {
+ if (error != null) {
+ error.delete(0, error.length());
+ }
final ConsoleConfiguration consoleConfig = getConsoleConfig();
if (consoleConfig != null) {
Configuration config = consoleConfig.getConfiguration();
if (config == null) {
- consoleConfig.build();
+ try {
+ consoleConfig.build();
+ } catch (HibernateException he) {
+ // here just ignore this
+ if (error != null) {
+ error.append(consoleConfigName);
+ error.append(": "); //$NON-NLS-1$
+ error.append(he.getMessage());
+ if (error.length() == 0) {
+ error.append(he.getCause());
+ }
+ }
+ }
consoleConfig.execute(new ExecutionContext.Command() {
public Object execute() {
if (consoleConfig.hasConfiguration()) {
@@ -694,6 +769,11 @@
}
return config;
}
+ if (error != null && consoleConfigName != null &&
consoleConfigName.length() > 0) {
+ error.append(consoleConfigName);
+ error.append(": "); //$NON-NLS-1$
+ error.append(DiagramViewerMessages.Diagram_incorrect_state);
+ }
return null;
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OpenDiagramActionDelegate.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OpenDiagramActionDelegate.java 2009-10-22
13:18:41 UTC (rev 18236)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OpenDiagramActionDelegate.java 2009-10-22
13:18:51 UTC (rev 18237)
@@ -26,12 +26,14 @@
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.internal.ObjectPluginAction;
+import org.hibernate.HibernateException;
import org.hibernate.cfg.Configuration;
import org.hibernate.console.ConsoleConfiguration;
import org.hibernate.console.execution.ExecutionContext;
import org.hibernate.eclipse.console.HibernateConsolePlugin;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.RootClass;
+import org.jboss.tools.hibernate.ui.diagram.DiagramViewerMessages;
import org.jboss.tools.hibernate.ui.diagram.UiPlugin;
@SuppressWarnings("restriction")
@@ -75,7 +77,14 @@
} else if (last_el instanceof ConsoleConfiguration) {
Configuration config = consoleConfig.getConfiguration();
if (config == null) {
- consoleConfig.build();
+ try {
+ consoleConfig.build();
+ } catch (HibernateException he) {
+ HibernateConsolePlugin.getDefault().showError(
+ HibernateConsolePlugin.getShell(),
+ DiagramViewerMessages.OpenDiagramActionDelegate_could_not_load_configuration +
+ ' ' + consoleConfig.getName(), he);
+ }
consoleConfig.execute( new ExecutionContext.Command() {
public Object execute() {
if (consoleConfig.hasConfiguration()) {
@@ -86,9 +95,11 @@
} );
config = consoleConfig.getConfiguration();
}
- Iterator<PersistentClass> it =
(Iterator<PersistentClass>)(config.getClassMappings());
- while (it.hasNext()) {
- setPC.add(it.next());
+ if (config != null) {
+ Iterator<PersistentClass> it =
(Iterator<PersistentClass>)(config.getClassMappings());
+ while (it.hasNext()) {
+ setPC.add(it.next());
+ }
}
}
}
@@ -111,9 +122,6 @@
public IEditorPart openEditor(Set<PersistentClass> setPC, ConsoleConfiguration
consoleConfig) throws PartInitException {
- if (setPC.size() <= 0) {
- return null;
- }
RootClass[] rcArr = new RootClass[setPC.size()];
PersistentClass persClass = null;
int i = 0;
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OrmLabelProvider.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OrmLabelProvider.java 2009-10-22
13:18:41 UTC (rev 18236)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OrmLabelProvider.java 2009-10-22
13:18:51 UTC (rev 18237)
@@ -23,6 +23,7 @@
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
+import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
@@ -69,7 +70,11 @@
if (consoleConfig != null) {
Configuration config = consoleConfig.getConfiguration();
if (config == null) {
- consoleConfig.build();
+ try {
+ consoleConfig.build();
+ } catch (HibernateException he) {
+ // here just ignore this
+ }
consoleConfig.execute(new ExecutionContext.Command() {
public Object execute() {
if (consoleConfig.hasConfiguration()) {