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/24 17:16:55 UTC
svn commit: r1188169 - in
/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc: ./ META-INF/
src/main/java/org/apache/cayenne/
src/main/java/org/apache/cayenne/extensions/views/
Author: dkazimirchyk
Date: Mon Oct 24 15:16:55 2011
New Revision: 1188169
URL: http://svn.apache.org/viewvc?rev=1188169&view=rev
Log:
CayenneModeler Eclipse Plugin: added Cayenne view
Added:
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/
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
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneViewModel.java
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/WorkspaceProject.java
Modified:
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/META-INF/MANIFEST.MF
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/plugin.xml
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/pom.xml
cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/Activator.java
Modified: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/META-INF/MANIFEST.MF?rev=1188169&r1=1188168&r2=1188169&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/META-INF/MANIFEST.MF (original)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/META-INF/MANIFEST.MF Mon Oct 24 15:16:55 2011
@@ -58,33 +58,34 @@ Import-Package: com.ibm.icu.text,com.ibm
ing.table,javax.swing.text,javax.swing.text.rtf,javax.swing.tree,java
x.swing.undo,javax.xml.parsers,javax.xml.transform,javax.xml.transfor
m.dom,javax.xml.transform.sax,javax.xml.transform.stream,junit.framew
- ork,junit.swingui,junit.textui,org.apache.bcel.classfile,org.apache.b
- cel.generic,org.apache.log4j,org.apache.log4j.net,org.apache.tools.an
- t,org.apache.tools.ant.filters,org.apache.tools.ant.taskdefs,org.apac
- he.tools.ant.types,org.apache.tools.ant.types.selectors,org.apache.to
- ols.ant.util,org.eclipse.core.commands,org.eclipse.core.commands.comm
- on,org.eclipse.core.commands.contexts,org.eclipse.core.commands.opera
- tions,org.eclipse.core.commands.util,org.eclipse.core.databinding.obs
- ervable,org.eclipse.core.databinding.observable.list,org.eclipse.core
- .databinding.observable.value,org.eclipse.core.databinding.property,o
- rg.eclipse.core.databinding.property.list,org.eclipse.core.databindin
- g.property.value,org.eclipse.core.expressions,org.eclipse.core.filebu
- ffers,org.eclipse.core.filebuffers.manipulation,org.eclipse.core.runt
- ime.dynamichelpers,org.eclipse.equinox.p2.engine,org.eclipse.equinox.
- p2.metadata,org.eclipse.equinox.p2.query,org.eclipse.help,org.eclipse
- .jface.databinding.swt,org.eclipse.jface.internal.text.html,org.eclip
- se.jface.text,org.eclipse.jface.text.hyperlink,org.eclipse.jface.text
- .information,org.eclipse.jface.text.quickassist,org.eclipse.jface.tex
- t.reconciler,org.eclipse.jface.text.revisions,org.eclipse.jface.text.
- source,org.eclipse.jface.text.templates,org.eclipse.jface.text.templa
- tes.persistence,org.eclipse.swt,org.eclipse.swt.accessibility,org.ecl
- ipse.swt.browser,org.eclipse.swt.custom,org.eclipse.swt.dnd,org.eclip
- se.swt.events,org.eclipse.swt.graphics,org.eclipse.swt.layout,org.ecl
- ipse.swt.program,org.eclipse.swt.widgets,org.eclipse.ui.forms.events,
- org.eclipse.ui.forms.widgets,org.eclipse.ui.texteditor.quickdiff,org.
- eclipse.ui.texteditor.rulers,org.eclipse.ui.texteditor.spelling,org.j
- dom,org.jdom.input,org.jdom.output,org.w3c.dom,org.xml.sax,org.xml.sa
- x.ext,org.xml.sax.helpers
+ ork,junit.swingui,junit.textui,org.apache.bcel.classfile;resolution:=
+ optional,org.apache.bcel.generic;resolution:=optional,org.apache.log4
+ j;resolution:=optional,org.apache.log4j.net;resolution:=optional,org.
+ apache.tools.ant,org.apache.tools.ant.filters,org.apache.tools.ant.ta
+ skdefs,org.apache.tools.ant.types,org.apache.tools.ant.types.selector
+ s,org.apache.tools.ant.util,org.eclipse.core.commands,org.eclipse.cor
+ e.commands.common,org.eclipse.core.commands.contexts,org.eclipse.core
+ .commands.operations,org.eclipse.core.commands.util,org.eclipse.core.
+ databinding.observable,org.eclipse.core.databinding.observable.list,o
+ rg.eclipse.core.databinding.observable.value,org.eclipse.core.databin
+ ding.property,org.eclipse.core.databinding.property.list,org.eclipse.
+ core.databinding.property.value,org.eclipse.core.expressions,org.ecli
+ pse.core.filebuffers,org.eclipse.core.filebuffers.manipulation,org.ec
+ lipse.core.runtime.dynamichelpers,org.eclipse.equinox.p2.engine,org.e
+ clipse.equinox.p2.metadata,org.eclipse.equinox.p2.query,org.eclipse.h
+ elp,org.eclipse.jface.databinding.swt,org.eclipse.jface.internal.text
+ .html,org.eclipse.jface.text,org.eclipse.jface.text.hyperlink,org.ecl
+ ipse.jface.text.information,org.eclipse.jface.text.quickassist,org.ec
+ lipse.jface.text.reconciler,org.eclipse.jface.text.revisions,org.ecli
+ pse.jface.text.source,org.eclipse.jface.text.templates,org.eclipse.jf
+ ace.text.templates.persistence,org.eclipse.swt,org.eclipse.swt.access
+ ibility,org.eclipse.swt.browser,org.eclipse.swt.custom,org.eclipse.sw
+ t.dnd,org.eclipse.swt.events,org.eclipse.swt.graphics,org.eclipse.swt
+ .layout,org.eclipse.swt.program,org.eclipse.swt.widgets,org.eclipse.u
+ i.forms.events,org.eclipse.ui.forms.widgets,org.eclipse.ui.texteditor
+ .quickdiff,org.eclipse.ui.texteditor.rulers,org.eclipse.ui.texteditor
+ .spelling,org.jdom,org.jdom.input,org.jdom.output,org.w3c.dom,org.xml
+ .sax,org.xml.sax.ext,org.xml.sax.helpers
Embed-StripGroup: true
Bundle-SymbolicName: cayenne-modeler-eclipse-plugin;singleton:=true
Modified: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/plugin.xml
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/plugin.xml?rev=1188169&r1=1188168&r2=1188169&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/plugin.xml (original)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/plugin.xml Mon Oct 24 15:16:55 2011
@@ -45,11 +45,43 @@
label="Cayenne Actions"
visible="true">
<action
+ id="org.apache.cayenne.extensions.actions.ModelerFocuse"
class="org.apache.cayenne.extensions.actions.ModelerToolbarAction"
toolbarPath="Normal/cayenneGroup"
+ label="CayenneModeler"
icon="icons/cayenne.png"
tooltip="CayenneModeler">
</action>
</actionSet>
</extension>
-</plugin>
\ No newline at end of file
+
+ <extension point="org.eclipse.ui.views">
+ <category
+ id="org.apache.cayenne"
+ name="Cayenne">
+ </category>
+ <view
+ id="org.apache.cayenne.extensions.views.CayenneView"
+ class="org.apache.cayenne.extensions.views.CayenneView"
+ category="org.apache.cayenne"
+ label="Cayenne"
+ name="Cayenne"
+ relationship="top"
+ restorable="true"
+ icon="icons/cayenne.png">
+ </view>
+ </extension>
+
+ <extension point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension
+ targetID="*">
+ <view
+ id="org.apache.cayenne.extensions.views.CayenneView"
+ relationship="top"
+ ratio="0.95f"
+ relative="org.eclipse.ui.editorss"
+ minimized="false">
+ </view>
+ </perspectiveExtension>
+ </extension>
+</plugin>
Modified: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/pom.xml
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/pom.xml?rev=1188169&r1=1188168&r2=1188169&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/pom.xml (original)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/pom.xml Mon Oct 24 15:16:55 2011
@@ -17,6 +17,7 @@
<properties>
<bundle.symbolicName>cayenne-modeler-eclipse-plugin</bundle.symbolicName>
<bundle.namespace>org.apache.cayenne</bundle.namespace>
+ <swt.variant>unknown</swt.variant>
</properties>
<repositories>
@@ -160,6 +161,59 @@
</plugin>
</plugins>
</build>
+
+ <profiles>
+ <profile>
+ <id>swt.gtk-linux-x86-64</id>
+ <activation>
+ <os>
+ <name>linux</name>
+ <arch>amd64</arch>
+ </os>
+ </activation>
+ <properties>
+ <swt.variant>gtk.linux.x86_64</swt.variant>
+ </properties>
+ </profile>
+
+ <profile>
+ <id>swt.gtk-linux-x86</id>
+ <activation>
+ <os>
+ <name>linux</name>
+ <arch>i386</arch>
+ </os>
+ </activation>
+ <properties>
+ <swt.variant>gtk.linux.x86</swt.variant>
+ </properties>
+ </profile>
+
+ <profile>
+ <id>swt.cocoa-macosx</id>
+ <activation>
+ <os>
+ <family>mac</family>
+ </os>
+ </activation>
+ <properties>
+ <swt.variant>cocoa.macosx</swt.variant>
+ </properties>
+ </profile>
+
+ <profile>
+ <id>swt.win32-x86</id>
+ <activation>
+ <os>
+ <family>windows</family>
+ <arch>x86</arch>
+ </os>
+ </activation>
+ <properties>
+ <swt.variant>win32.win32.x86</swt.variant>
+ </properties>
+ </profile>
+ </profiles>
<dependencies>
<!-- Eclipse dependencies -->
@@ -204,6 +258,16 @@
<artifactId>ide</artifactId>
<version>3.6.2.M20101201-0800</version>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.core</groupId>
+ <artifactId>commands</artifactId>
+ <version>3.6.0.I20100512-1500</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.swt</groupId>
+ <artifactId>org.eclipse.swt.${swt.variant}</artifactId>
+ <version>3.6.2</version>
+ </dependency>
<!-- Cayenne dependencies -->
Modified: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/Activator.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/Activator.java?rev=1188169&r1=1188168&r2=1188169&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/Activator.java (original)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/Activator.java Mon Oct 24 15:16:55 2011
@@ -45,7 +45,7 @@ public class Activator extends AbstractU
* The shared instance.
*/
private static Activator plugin;
- public static final String PLUGIN_ID = "org.apache.cayenne.extentions";
+ public static final String PLUGIN_ID = "cayenne-modeler-eclipse-plugin";
protected Injector injector;
protected String projectName;
Added: 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=1188169&view=auto
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneContentProvider.java (added)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneContentProvider.java Mon Oct 24 15:16:55 2011
@@ -0,0 +1,38 @@
+package org.apache.cayenne.extensions.views;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+public class CayenneContentProvider implements ITreeContentProvider {
+
+ private CayenneViewModel model;
+
+ public Object[] getElements(Object arg0) {
+ return model.getProjects().toArray();
+ }
+
+ public void dispose() {
+
+ }
+
+ public void inputChanged(Viewer arg0, Object oldInput, Object newInput) {
+ this.model = (CayenneViewModel)newInput;
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof WorkspaceProject) {
+ WorkspaceProject project = (WorkspaceProject)parentElement;
+ return project.getCayenneProjects().toArray();
+ }
+ return null;
+ }
+
+ public Object getParent(Object arg0) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ return element instanceof WorkspaceProject;
+ }
+
+}
Added: 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=1188169&view=auto
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneLabelProvider.java (added)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneLabelProvider.java Mon Oct 24 15:16:55 2011
@@ -0,0 +1,33 @@
+package org.apache.cayenne.extensions.views;
+
+import org.apache.cayenne.Activator;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+public class CayenneLabelProvider extends LabelProvider {
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof WorkspaceProject) {
+ return ((WorkspaceProject) element).getName();
+ }
+ else {
+ return ((CayenneProjectFile) element).getName();
+ }
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof WorkspaceProject) {
+ return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_PROJECT);
+ }
+ else {
+ ImageDescriptor image = Activator.getImageDescriptor("icons/cayenne.png");
+ return image.createImage();
+ }
+ }
+
+}
Added: 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=1188169&view=auto
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneProjectFile.java (added)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneProjectFile.java Mon Oct 24 15:16:55 2011
@@ -0,0 +1,23 @@
+package org.apache.cayenne.extensions.views;
+
+import java.io.File;
+
+public class CayenneProjectFile {
+
+ private File path;
+ private String name;
+
+ public CayenneProjectFile(String name, File path) {
+ this.name = name;
+ this.path = path;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public File getPath() {
+ return path;
+ }
+
+}
Added: 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=1188169&view=auto
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneView.java (added)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneView.java Mon Oct 24 15:16:55 2011
@@ -0,0 +1,55 @@
+package org.apache.cayenne.extensions.views;
+
+import java.io.File;
+
+import org.apache.cayenne.extensions.modeler.PluginMain;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.ViewPart;
+
+public class CayenneView extends ViewPart {
+
+ private TreeViewer viewer;
+
+ @Override
+ public void createPartControl(Composite parent) {
+ FillLayout layout = new FillLayout();
+ parent.setLayout(layout);
+
+ viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+ viewer.setContentProvider(new CayenneContentProvider());
+ viewer.setLabelProvider(new CayenneLabelProvider());
+ viewer.setInput(new CayenneViewModel());
+
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+
+ public void doubleClick(DoubleClickEvent e) {
+ 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();
+ }
+ }
+ else {
+ viewer.setExpandedState(element, !viewer.getExpandedState(element));
+ }
+ }
+ });
+
+ }
+
+ @Override
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+}
Added: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneViewModel.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneViewModel.java?rev=1188169&view=auto
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneViewModel.java (added)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/CayenneViewModel.java Mon Oct 24 15:16:55 2011
@@ -0,0 +1,27 @@
+package org.apache.cayenne.extensions.views;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+public class CayenneViewModel {
+
+ public List<WorkspaceProject> getProjects() {
+ List<WorkspaceProject> projects = new ArrayList<WorkspaceProject>();
+
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+
+ for (IProject project : workspace.getRoot().getProjects()) {
+ WorkspaceProject proj = new WorkspaceProject(
+ project.getName(),
+ project.getLocation().toFile());
+ projects.add(proj);
+ }
+
+ return projects;
+ }
+
+}
Added: cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/WorkspaceProject.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/WorkspaceProject.java?rev=1188169&view=auto
==============================================================================
--- cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/WorkspaceProject.java (added)
+++ cayenne/sandbox/cayenne-modeler-eclipse-plugin-gsoc/src/main/java/org/apache/cayenne/extensions/views/WorkspaceProject.java Mon Oct 24 15:16:55 2011
@@ -0,0 +1,77 @@
+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;
+
+public class WorkspaceProject {
+
+ private String name;
+ private File rootDir;
+
+ private List<CayenneProjectFile> cayenneProjects;
+
+ public WorkspaceProject(String name, File rootDir) {
+ this.name = name;
+ this.rootDir = rootDir;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public File getRootDir() {
+ return rootDir;
+ }
+
+ public List<CayenneProjectFile> getCayenneProjects() {
+
+ if (cayenneProjects != null) {
+ return cayenneProjects;
+ }
+
+ cayenneProjects = new ArrayList<CayenneProjectFile>();
+ List<File> cayenneProjectPaths = new ArrayList<File>();
+ getCayenneProjects(rootDir, cayenneProjectPaths);
+
+ for (File path : cayenneProjectPaths) {
+ cayenneProjects.add(new CayenneProjectFile(path.getName(), path));
+ }
+
+ return cayenneProjects;
+ }
+
+ private void getCayenneProjects(File projectDir, List<File> results) {
+ File dir = projectDir;
+
+ if (dir != null) {
+ FilenameFilter projectFilter = new FilenameFilter() {
+
+ public boolean accept(File dir, String name) {
+ return name.matches("cayenne-.*xml");
+ }
+ };
+
+ for (File file : dir.listFiles(projectFilter)) {
+ results.add(file);
+ }
+
+ FileFilter folderFilter = new FileFilter() {
+
+ public boolean accept(File pathname) {
+ return pathname.isDirectory();
+ }
+ };
+
+ for (File subdir : dir.listFiles(folderFilter)) {
+ if (!"target".equals(subdir.getName())) {
+ getCayenneProjects(subdir, results);
+ }
+ }
+ }
+ }
+
+
+}