You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by dk...@apache.org on 2011/10/25 14:40:18 UTC
svn commit: r1188633 - in
/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views:
CayenneContentProvider.java CayenneDatamapFile.java
CayenneLabelProvider.java CayenneProjectFile.java CayenneView.java
Author: dkazimirchyk
Date: Tue Oct 25 12:40:18 2011
New Revision: 1188633
URL: http://svn.apache.org/viewvc?rev=1188633&view=rev
Log:
CayenneModeler Eclipse Plugin: added datamaps to Eclipse view
Added:
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneDatamapFile.java
Modified:
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneContentProvider.java
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneLabelProvider.java
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneProjectFile.java
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneView.java
Modified: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneContentProvider.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneContentProvider.java?rev=1188633&r1=1188632&r2=1188633&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneContentProvider.java (original)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneContentProvider.java Tue Oct 25 12:40:18 2011
@@ -24,6 +24,10 @@ public class CayenneContentProvider impl
WorkspaceProject project = (WorkspaceProject)parentElement;
return project.getCayenneProjects().toArray();
}
+ else if (parentElement instanceof CayenneProjectFile) {
+ CayenneProjectFile project = (CayenneProjectFile)parentElement;
+ return project.getDatamaps().toArray();
+ }
return null;
}
Added: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneDatamapFile.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneDatamapFile.java?rev=1188633&view=auto
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneDatamapFile.java (added)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneDatamapFile.java Tue Oct 25 12:40:18 2011
@@ -0,0 +1,31 @@
+package org.apache.cayenne.extensions.views;
+
+import java.io.File;
+
+public class CayenneDatamapFile {
+
+ private File path;
+ private String name;
+
+ private CayenneProjectFile parentProject;
+
+ public CayenneDatamapFile(
+ String name, File path, CayenneProjectFile parentProject) {
+ this.name = name;
+ this.path = path;
+ this.parentProject = parentProject;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public File getPath() {
+ return path;
+ }
+
+ public CayenneProjectFile getParentProject() {
+ return parentProject;
+ }
+
+}
Modified: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneLabelProvider.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneLabelProvider.java?rev=1188633&r1=1188632&r2=1188633&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneLabelProvider.java (original)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneLabelProvider.java Tue Oct 25 12:40:18 2011
@@ -14,9 +14,12 @@ public class CayenneLabelProvider extend
if (element instanceof WorkspaceProject) {
return ((WorkspaceProject) element).getName();
}
- else {
+ else if (element instanceof CayenneProjectFile) {
return ((CayenneProjectFile) element).getName();
}
+ else {
+ return ((CayenneDatamapFile) element).getName();
+ }
}
@Override
Modified: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneProjectFile.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneProjectFile.java?rev=1188633&r1=1188632&r2=1188633&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneProjectFile.java (original)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneProjectFile.java Tue Oct 25 12:40:18 2011
@@ -1,15 +1,32 @@
package org.apache.cayenne.extensions.views;
import java.io.File;
+import java.io.FileFilter;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
public class CayenneProjectFile {
+ private static Log logger = LogFactory.getLog(CayenneProjectFile.class);
+
private File path;
private String name;
+ private List<CayenneDatamapFile> datamaps;
+ private List<String> datamapNames;
+
public CayenneProjectFile(String name, File path) {
this.name = name;
this.path = path;
+ this.datamapNames = getDatamapNames();
}
public String getName() {
@@ -19,5 +36,72 @@ public class CayenneProjectFile {
public File getPath() {
return path;
}
+
+ public List<CayenneDatamapFile> getDatamaps() {
+ if (datamaps != null) {
+ return datamaps;
+ }
+
+ datamaps = new ArrayList<CayenneDatamapFile>();
+ List<File> datamapFiles = new ArrayList<File>();
+ getDatamapFiles(path.getParentFile(), datamapFiles);
+
+ for (File file : datamapFiles) {
+ datamaps.add(new CayenneDatamapFile(file.getName(), file, this));
+ }
+
+ return datamaps;
+ }
+
+ protected void getDatamapFiles(File rootDir, List<File> results) {
+ File dir = rootDir;
+
+ if (dir != null) {
+ FilenameFilter datamapFilter = new FilenameFilter() {
+
+ public boolean accept(File dir, String name) {
+ return name.endsWith(".map.xml") && datamapNames.contains(name.substring(0, name.length() - 8));
+ }
+ };
+
+ FileFilter folderFilter = new FileFilter() {
+
+ public boolean accept(File pathname) {
+ return pathname.isDirectory();
+ }
+ };
+
+ for (File file : dir.listFiles(datamapFilter)) {
+ results.add(file);
+ }
+
+ // searching in one more directory level down
+ for (File subdir : dir.listFiles(folderFilter)) {
+ for (File file : subdir.listFiles(datamapFilter)) {
+ results.add(file);
+ }
+ }
+ }
+ }
+
+ protected List<String> getDatamapNames() {
+ List<String> datamapNames = new ArrayList<String>();
+
+ try {
+ Document doc = DocumentBuilderFactory.newInstance()
+ .newDocumentBuilder().parse(path);
+
+ NodeList maps = doc.getElementsByTagName("map");
+
+ for (int i = 0; i < maps.getLength(); i++) {
+ datamapNames.add(
+ maps.item(i).getAttributes().getNamedItem("name").getNodeValue());
+ }
+ } catch (Exception e) {
+ logger.error(name + ": error searching for datamaps.");
+ }
+
+ return datamapNames;
+ }
}
Modified: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneView.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneView.java?rev=1188633&r1=1188632&r2=1188633&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneView.java (original)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneView.java Tue Oct 25 12:40:18 2011
@@ -32,12 +32,12 @@ public class CayenneView extends ViewPar
IStructuredSelection selection = (IStructuredSelection)e.getSelection();
Object element = selection.getFirstElement();
if (element instanceof CayenneProjectFile) {
- File projFile = ((CayenneProjectFile) element).getPath();
- if (projFile != null) {
- String[] args = new String[] { projFile.toString() };
- PluginMain plugin = new PluginMain(args);
- plugin.start();
- }
+ runModeler((CayenneProjectFile) element);
+
+ viewer.setExpandedState(element, !viewer.getExpandedState(element));
+ }
+ else if (element instanceof CayenneDatamapFile) {
+ runModeler(((CayenneDatamapFile) element).getParentProject());
}
else {
viewer.setExpandedState(element, !viewer.getExpandedState(element));
@@ -47,6 +47,15 @@ public class CayenneView extends ViewPar
}
+ protected void runModeler(CayenneProjectFile project) {
+ File projFile = project.getPath();
+ if (projFile != null) {
+ String[] args = new String[] { projFile.toString() };
+ PluginMain plugin = new PluginMain(args);
+ plugin.start();
+ }
+ }
+
@Override
public void setFocus() {
viewer.getControl().setFocus();