http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ReverseEngineeringView.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ReverseEngineeringView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ReverseEngineeringView.java new file mode 100644 index 0000000..087ab26 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ReverseEngineeringView.java @@ -0,0 +1,274 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ + +package org.apache.cayenne.modeler.dialog.db; + +import com.jgoodies.forms.builder.PanelBuilder; +import com.jgoodies.forms.layout.CellConstraints; +import com.jgoodies.forms.layout.FormLayout; +import org.apache.cayenne.CayenneRuntimeException; +import org.apache.cayenne.dbimport.ReverseEngineering; +import org.apache.cayenne.map.DataMap; +import org.apache.cayenne.modeler.CayenneModelerController; +import org.apache.cayenne.modeler.ProjectController; +import org.apache.cayenne.modeler.dialog.db.model.DBModel; +import org.apache.cayenne.modeler.dialog.pref.TreeEditor; +import org.apache.cayenne.modeler.dialog.pref.XMLFileEditor; +import org.apache.cayenne.modeler.event.DataMapDisplayEvent; +import org.apache.cayenne.modeler.event.DataMapDisplayListener; +import org.apache.cayenne.modeler.util.ModelerUtil; + +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSeparator; +import javax.swing.JSplitPane; +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + */ +public class ReverseEngineeringView extends JPanel { + protected ProjectController controller; + public ReverseEngineeringController reverseEngineeringController; + protected JPanel reverseEngineering; + + protected JComboBox dataSources; + protected JButton configButton; + protected JButton syncButton; + protected JButton executeButton; + + protected PanelBuilder builder; + protected JSeparator separator; + protected JSplitPane splitPane; + protected JLabel xmlLabel; + protected JLabel treeLabel; + protected Icon icon; + + protected XMLFileEditor xmlFileEditor; + protected TreeEditor treeEditor; + + protected DataMap tempDataMap; + + protected Map<String, DataMapViewModel> reverseEngineeringViewMap; + + + private String template = + "<reverseEngineering>\n" + + " <skipRelationshipsLoading>false</skipRelationshipsLoading>\n" + + " <skipPrimaryKeyLoading>false</skipPrimaryKeyLoading>\n" + + "\n" + + " <catalog>\n" + + " <schema>\n" + + " <includeTable>\n" + + " </includeTable>\n" + + " </schema>\n" + + " </catalog>\n" + + " <includeProcedure pattern=\".*\"/>\n" + + "</reverseEngineering>"; + + public ReverseEngineeringView(ProjectController controller) { + this.controller = controller; + + this.reverseEngineeringViewMap = new HashMap<>(); + initView(); + initController(); + } + + private void initView() { + this.reverseEngineering = new JPanel(); + this.dataSources = new JComboBox(); + this.splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true); + this.configButton = new JButton("..."); + this.configButton.setToolTipText("configure local DataSource"); + this.syncButton = new JButton(); + this.icon = ModelerUtil.buildIcon("icon-refresh.png"); + this.syncButton.setIcon(icon); + this.syncButton.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); + this.executeButton = new JButton("Execute"); + this.treeLabel = new JLabel("Preview"); + this.xmlLabel = new JLabel("Reverse Engineering XML Editor"); + this.treeLabel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5)); + this.xmlLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 10, 5)); + + this.treeEditor = new TreeEditor(controller); + this.xmlFileEditor = new XMLFileEditor(controller); + + CellConstraints cc = new CellConstraints(); + this.builder = new PanelBuilder(new FormLayout( + "210dlu:grow, pref, 0dlu, fill:max(172dlu;pref), 3dlu, fill:20dlu", + "p")); + builder.setDefaultDialogBorder(); + builder.add(dataSources, cc.xy(4, 1)); + builder.add(configButton, cc.xy(6, 1)); + + JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + buttons.add(executeButton); + + JPanel treeHeaderComponent = new JPanel(new FlowLayout(FlowLayout.LEFT)); + treeHeaderComponent.add(treeLabel); + treeHeaderComponent.add(syncButton); + + JPanel leftComponent = new JPanel(); + leftComponent.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); + leftComponent.setLayout(new BorderLayout()); + leftComponent.add(xmlLabel, BorderLayout.NORTH); + leftComponent.add(xmlFileEditor.getView().getScrollPane(), BorderLayout.CENTER); + + JPanel rightComponent = new JPanel(); + rightComponent.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); + rightComponent.setLayout(new BorderLayout()); + rightComponent.add(treeHeaderComponent, BorderLayout.NORTH); + rightComponent.add(treeEditor.getView().getScrollPane(), BorderLayout.CENTER); + + splitPane.setLeftComponent(leftComponent); + splitPane.setRightComponent(rightComponent); + splitPane.setResizeWeight(0.5); + + JPanel splitWithErrorsPanel = new JPanel(); + splitWithErrorsPanel.setLayout(new BorderLayout()); + splitWithErrorsPanel.add(splitPane, BorderLayout.CENTER); + xmlFileEditor.getView().getLabel().setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); + splitWithErrorsPanel.add(xmlFileEditor.getView().getLabel(), BorderLayout.SOUTH); + + setLayout(new BorderLayout()); + add(builder.getPanel(), BorderLayout.NORTH); + add(splitWithErrorsPanel, BorderLayout.CENTER); + add(buttons, BorderLayout.SOUTH); + } + + public void initController() { + controller.addDataMapDisplayListener(new DataMapDisplayListener() { + public void currentDataMapChanged(DataMapDisplayEvent e) { + DataMap map = e.getDataMap(); + + if (tempDataMap != null) { + String mapName = tempDataMap.getName(); + DataMapViewModel dataMapViewModel = new DataMapViewModel(mapName); + String xmlText = xmlFileEditor.getView().getEditorPane().getText(); + dataMapViewModel.setReverseEngineeringText(xmlText); + if (reverseEngineeringViewMap.containsKey(mapName)) { + DataMapViewModel dataMapViewPrevious = reverseEngineeringViewMap.get(mapName); + if (dataMapViewPrevious.getReverseEngineeringTree() != null) { + dataMapViewModel.setReverseEngineeringTree(dataMapViewPrevious.getReverseEngineeringTree()); + } else { + dataMapViewModel.setReverseEngineeringTree(new DBModel("")); + } + } else { + dataMapViewModel.setReverseEngineeringTree(new DBModel("")); + } + reverseEngineeringViewMap.put(mapName, dataMapViewModel); + } + tempDataMap = map; + + if (map != null) { + loadPreviousData(); + xmlFileEditor.removeAlertMessage(); + } + } + }); + + this.reverseEngineeringController = new ReverseEngineeringController(controller, this); + } + + public void loadPreviousData() { + DataMap dataMap = controller.getCurrentDataMap(); + try { + if (dataMap != null) { + String reverseEngineeringText = null; + if (reverseEngineeringViewMap.containsKey(dataMap.getName())) { + reverseEngineeringText = reverseEngineeringViewMap.get(dataMap.getName()).getReverseEngineeringText(); + } + if (reverseEngineeringText != null) { + xmlFileEditor.getView().getEditorPane().setText(reverseEngineeringText); + } else { + if (dataMap.getReverseEngineering() == null) { + getXmlFileEditor().getView().getEditorPane().setText(template); + } else { + ReverseEngineering reverseEngineering = dataMap.getReverseEngineering(); + if (reverseEngineering.getConfigurationSource() != null) { + xmlFileEditor.getView().getEditorPane().setPage(reverseEngineering.getConfigurationSource().getURL()); + } + } + } + + if (reverseEngineeringViewMap.containsKey(dataMap.getName())) { + if (reverseEngineeringViewMap.get(dataMap.getName()).getReverseEngineeringTree() != null) { + DBModel loadedPreviousTree = reverseEngineeringViewMap.get(dataMap.getName()).getReverseEngineeringTree(); + treeEditor.convertTreeViewIntoTreeNode(loadedPreviousTree); + } else { + treeEditor.setRoot(""); + } + } else { + treeEditor.setRoot(""); + } + } + + if (((CayenneModelerController) controller.getParent()) + .getEditorView() + .getDataMapView() + .getSelectedIndex() == 1) { + ((CayenneModelerController) controller.getParent()) + .getEditorView() + .getDataMapView() + .setSelectedIndex(1); + } + } catch (IOException e) { + throw new CayenneRuntimeException("Invalid URL"); + } + } + + public JComboBox getDataSources() { + return dataSources; + } + + public JButton getConfigButton() { + return configButton; + } + + public JButton getSyncButton() { + return syncButton; + } + + public TreeEditor getTreeEditor() { + return treeEditor; + } + + public XMLFileEditor getXmlFileEditor() { + return xmlFileEditor; + } + + public JButton getExecuteButton() { + return executeButton; + } + + public Map<String, DataMapViewModel> getReverseEngineeringViewMap() { + return reverseEngineeringViewMap; + } + + public void setTempDataMap(DataMap dataMap) { + tempDataMap = dataMap; + } +}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBCatalog.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBCatalog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBCatalog.java new file mode 100644 index 0000000..c7e1416 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBCatalog.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cayenne.modeler.dialog.db.model; + +/** + * @since 4.0 + */ +public class DBCatalog extends DBElement{ + public DBCatalog(String name) { + super(name); + } + + public void addElement(DBElement dbElement){ + dbElements.add(dbElement); + } + + @Override + public String toString() { + return name; + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBColumn.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBColumn.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBColumn.java new file mode 100644 index 0000000..ed083c9 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBColumn.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cayenne.modeler.dialog.db.model; + +/** + * @since 4.0 + */ +public class DBColumn extends DBElement{ + + public DBColumn(String name) { + super(name); + } + + @Override + public String toString() { + return name; + } + + @Override + public void addElement(DBElement dbElement) { + throw new UnsupportedOperationException(); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBElement.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBElement.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBElement.java new file mode 100644 index 0000000..b3a352f --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBElement.java @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cayenne.modeler.dialog.db.model; + +import java.util.LinkedList; +import java.util.List; + +/** + * @since 4.0 + */ +public abstract class DBElement { + protected String name; + protected List<DBElement> dbElements; + + public DBElement(String name) { + this.name = name; + dbElements = new LinkedList<>(); + } + + public List<DBElement> getDbElements() { + return dbElements; + } + + public abstract void addElement(DBElement dbElement); + + public String getName() { + return name; + } + + @Override + public String toString() { + return name; + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBEntity.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBEntity.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBEntity.java new file mode 100644 index 0000000..069a398 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBEntity.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cayenne.modeler.dialog.db.model; + +/** + * @since 4.0 + */ +public class DBEntity extends DBElement{ + public DBEntity(String name) { + super(name); + } + + public void addElement(DBElement dbElement){ + dbElements.add(dbElement); + } + + @Override + public String toString() { + return name; + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBModel.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBModel.java new file mode 100644 index 0000000..449f436 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBModel.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cayenne.modeler.dialog.db.model; + +/** + * @since 4.0 + */ +public class DBModel extends DBElement { + public DBModel(String name) { + super(name); + } + + @Override + public void addElement(DBElement dbElement) { + dbElements.add(dbElement); + } + + @Override + public String toString() { + return name; + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBProcedure.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBProcedure.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBProcedure.java new file mode 100644 index 0000000..268eaf4 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBProcedure.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cayenne.modeler.dialog.db.model; + +/** + * @since 4.0 + */ +public class DBProcedure extends DBElement{ + public DBProcedure(String name) { + super(name); + } + + @Override + public void addElement(DBElement dbElement) { + throw new UnsupportedOperationException(); + } + + @Override + public String toString() { + return name; + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBSchema.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBSchema.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBSchema.java new file mode 100644 index 0000000..c6a7d34 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/model/DBSchema.java @@ -0,0 +1,48 @@ + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cayenne.modeler.dialog.db.model; + +import java.util.LinkedList; +import java.util.List; + +/** + * @since 4.0 + */ +public class DBSchema extends DBElement{ + public List<DBElement> getDbElements() { + return dbElements; + } + + protected List<DBElement> dbElements; + + public DBSchema(String name) { + super(name); + dbElements = new LinkedList<>(); + } + + public void addElement(DBElement dbElement){ + dbElements.add(dbElement); + } + + @Override + public String toString() { + return name; + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/FilteredTreeCellRenderer.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/FilteredTreeCellRenderer.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/FilteredTreeCellRenderer.java new file mode 100644 index 0000000..c831f23 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/FilteredTreeCellRenderer.java @@ -0,0 +1,85 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne.modeler.dialog.pref; + +import org.apache.cayenne.modeler.dialog.db.model.DBCatalog; +import org.apache.cayenne.modeler.dialog.db.model.DBColumn; +import org.apache.cayenne.modeler.dialog.db.model.DBEntity; +import org.apache.cayenne.modeler.dialog.db.model.DBProcedure; +import org.apache.cayenne.modeler.dialog.db.model.DBSchema; +import org.apache.cayenne.modeler.util.CellRenderers; + +import javax.swing.ImageIcon; +import javax.swing.JTree; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import java.awt.Component; + +/** + * @since 4.0 + */ +public class FilteredTreeCellRenderer extends DefaultTreeCellRenderer { + + @Override + public Component getTreeCellRendererComponent( + JTree tree, + Object value, + boolean sel, + boolean expanded, + boolean leaf, + int row, + boolean hasFocus) { + + super.getTreeCellRendererComponent( + tree, value, sel, + expanded, leaf, row, + hasFocus); + if ((value != null) && (value instanceof DefaultMutableTreeNode)) { + Object userObject = ((DefaultMutableTreeNode) value) + .getUserObject(); + ImageIcon imageIcon = CellRenderers.iconForObject(userObject); + + if (userObject instanceof DBCatalog) { + setText(((DBCatalog) userObject).getName()); + setIcon(imageIcon); + } + + if (userObject instanceof DBSchema) { + setText(((DBSchema) userObject).getName()); + setIcon(imageIcon); + } + + if (userObject instanceof DBEntity) { + setText(((DBEntity) userObject).getName()); + setIcon(imageIcon); + } + + if (userObject instanceof DBColumn) { + setText(((DBColumn) userObject).getName()); + setIcon(imageIcon); + } + + if (userObject instanceof DBProcedure) { + setText(((DBProcedure) userObject).getName()); + setIcon(imageIcon); + } + } + return this; + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TreeEditor.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TreeEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TreeEditor.java new file mode 100644 index 0000000..f3791f7 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TreeEditor.java @@ -0,0 +1,101 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne.modeler.dialog.pref; + +import org.apache.cayenne.modeler.dialog.db.model.DBCatalog; +import org.apache.cayenne.modeler.dialog.db.model.DBElement; +import org.apache.cayenne.modeler.dialog.db.model.DBEntity; +import org.apache.cayenne.modeler.dialog.db.model.DBModel; +import org.apache.cayenne.modeler.dialog.db.model.DBSchema; +import org.apache.cayenne.modeler.util.CayenneController; + +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeModel; + +/** + * @since 4.0 + */ +public class TreeEditor extends CayenneController { + protected TreeView treeView; + protected DefaultMutableTreeNode root; + + public TreeEditor(CayenneController parent) { + super(parent); + + this.treeView = new TreeView(root); + } + + @Override + public TreeView getView() { + return treeView; + } + + public void setRoot(String dataSource) { + root = new DefaultMutableTreeNode(dataSource); + DefaultTreeModel model = (DefaultTreeModel) treeView.getTree().getModel(); + model.setRoot(root); + } + + public void convertTreeViewIntoTreeNode(DBModel dbModel) { + DefaultMutableTreeNode modelNode = new DefaultMutableTreeNode(dbModel); + for (DBElement dbElement: dbModel.getDbElements()) { + DefaultMutableTreeNode elementNode = new DefaultMutableTreeNode(dbElement); + if (dbElement instanceof DBCatalog) { + parseCatalog(dbElement, elementNode); + } + if (dbElement instanceof DBSchema) { + parseSchema(dbElement, elementNode); + } + modelNode.add(elementNode); + } + root = modelNode; + DefaultTreeModel model = (DefaultTreeModel) treeView.getTree().getModel(); + model.setRoot(root); + } + + public void parseCatalog(DBElement catalog, DefaultMutableTreeNode elementNode) { + for (DBElement dbElement: catalog.getDbElements()) { + DefaultMutableTreeNode element = new DefaultMutableTreeNode(dbElement); + if (dbElement instanceof DBSchema) { + parseSchema(dbElement, element); + } + if (dbElement instanceof DBEntity){ + parseEntity(dbElement, element); + } + elementNode.add(element); + } + } + + public void parseSchema(DBElement schema, DefaultMutableTreeNode elementNode) { + for (DBElement element: schema.getDbElements()) { + DefaultMutableTreeNode entityNode = new DefaultMutableTreeNode(element); + if (element instanceof DBEntity) { + parseEntity(element, entityNode); + } + elementNode.add(entityNode); + } + } + + private void parseEntity(DBElement entity, DefaultMutableTreeNode entityNode) { + for (DBElement column: entity.getDbElements()) { + DefaultMutableTreeNode columnNode = new DefaultMutableTreeNode(column); + entityNode.add(columnNode); + } + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TreeView.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TreeView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TreeView.java new file mode 100644 index 0000000..f464359 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TreeView.java @@ -0,0 +1,56 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne.modeler.dialog.pref; + +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTree; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.TreeCellRenderer; +import java.awt.Dimension; + +/** + * @since 4.0 + */ +public class TreeView extends JPanel { + protected JTree tree; + protected JScrollPane scrollPane; + + public JTree getTree() { + return tree; + } + + public void setTree(JTree tree) { + this.tree = tree; + } + + public TreeView(DefaultMutableTreeNode root) { + this.tree = new JTree(root); + + TreeCellRenderer renderer = new FilteredTreeCellRenderer(); + tree.setCellRenderer(renderer); + + scrollPane = new JScrollPane(tree); + scrollPane.setPreferredSize(new Dimension(210, 300)); + } + + public JScrollPane getScrollPane() { + return scrollPane; + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/XMLFileEditor.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/XMLFileEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/XMLFileEditor.java new file mode 100644 index 0000000..920e2ad --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/XMLFileEditor.java @@ -0,0 +1,82 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne.modeler.dialog.pref; + +import org.apache.cayenne.dbimport.DefaultReverseEngineeringLoader; +import org.apache.cayenne.dbimport.DefaultReverseEngineeringWriter; +import org.apache.cayenne.dbimport.ReverseEngineering; +import org.apache.cayenne.dbimport.ReverseEngineeringLoaderException; +import org.apache.cayenne.modeler.util.CayenneController; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.nio.charset.StandardCharsets; + +/** + * @since 4.0 + */ +public class XMLFileEditor extends CayenneController { + private static final Log LOGGER = LogFactory.getLog(XMLFileEditor.class); + + protected XMLView XMLview; + + + public XMLFileEditor(CayenneController parent) { + super(parent); + + this.XMLview = new XMLView(); + } + + public ReverseEngineering convertTextIntoReverseEngineering() throws ReverseEngineeringLoaderException { + String text = XMLview.getEditorPane().getText(); + try(InputStream inputStream = new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8))) { + ReverseEngineering reverseEngineering = (new DefaultReverseEngineeringLoader()).load(inputStream); + return reverseEngineering; + } catch (IOException e) { + addAlertMessage(e.getMessage()); + } + return null; + } + + public void convertReverseEngineeringIntoText(ReverseEngineering reverseEngineering) { + StringWriter buffer = new StringWriter(); + PrintWriter writer = new PrintWriter(buffer); + DefaultReverseEngineeringWriter reverseEngineeringWriter = new DefaultReverseEngineeringWriter(); + reverseEngineeringWriter.write(reverseEngineering, writer); + XMLview.getEditorPane().setText(buffer.toString()); + } + + @Override + public XMLView getView() { + return XMLview; + } + + public void addAlertMessage(String message) { + XMLview.addAlertMessage(message); + } + + public void removeAlertMessage() { + XMLview.removeAlertMessage(); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/XMLView.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/XMLView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/XMLView.java new file mode 100644 index 0000000..8dab6c5 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/XMLView.java @@ -0,0 +1,72 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne.modeler.dialog.pref; + + +import javax.swing.JEditorPane; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import java.awt.Color; +import java.awt.Dimension; + +/** + * @since 4.0 + */ +public class XMLView extends JPanel { + protected JEditorPane editorPane; + protected JScrollPane scrollPane; + protected JLabel label; + + public XMLView() { + this.editorPane = new JEditorPane(); + this.scrollPane = new JScrollPane(editorPane); + this.label = new JLabel(); + this.label.setVisible(false); + + scrollPane = new JScrollPane(editorPane); + scrollPane.setPreferredSize(new Dimension(210, 300)); + } + + public JEditorPane getEditorPane() { + return editorPane; + } + + public JScrollPane getScrollPane() { + return scrollPane; + } + + public JLabel getLabel() { + return label; + } + + public void setLabel(JLabel label) { + this.label = label; + } + + public void addAlertMessage(String message) { + label.setText(message); + label.setForeground (Color.red); + label.setVisible(true); + } + + public void removeAlertMessage() { + label.setVisible(false); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java index e33e319..76b842d 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapTabbedView.java @@ -20,19 +20,27 @@ package org.apache.cayenne.modeler.editor; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import org.apache.cayenne.modeler.ProjectController; +import org.apache.cayenne.modeler.dialog.db.ReverseEngineeringScrollPane; +import org.apache.cayenne.modeler.dialog.db.ReverseEngineeringView; + +import java.awt.event.ActionEvent; /** * Data map editing tabs container * */ -public class DataMapTabbedView extends JTabbedPane { +public class DataMapTabbedView extends JTabbedPane implements ChangeListener { ProjectController mediator; + private ReverseEngineeringScrollPane reverseEngineeringScrollPane; /** * constructor + * * @param mediator mediator instance */ public DataMapTabbedView(ProjectController mediator) { @@ -53,6 +61,19 @@ public class DataMapTabbedView extends JTabbedPane { // must be wrapped in a scroll pane JScrollPane dataMapView = new JScrollPane(new DataMapView(mediator)); addTab("DataMap", dataMapView); + + ReverseEngineeringView reverseEngineeringView = new ReverseEngineeringView(mediator); + reverseEngineeringScrollPane = new ReverseEngineeringScrollPane(reverseEngineeringView); + addTab("Reverse Engineering", reverseEngineeringScrollPane); + addChangeListener(this); + } + + @Override + public void stateChanged(ChangeEvent changeEvent) { + if (getSelectedComponent().equals(reverseEngineeringScrollPane)) { + ActionEvent actionEvent = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, ""); + actionEvent.setSource(reverseEngineeringScrollPane); + } } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java index 7169694..fddf615 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java @@ -43,10 +43,11 @@ import org.apache.cayenne.map.Entity; import org.apache.cayenne.map.MappingNamespace; import org.apache.cayenne.map.ObjEntity; import org.apache.cayenne.map.Procedure; +import org.apache.cayenne.map.QueryDescriptor; import org.apache.cayenne.map.Relationship; import org.apache.cayenne.modeler.Application; import org.apache.cayenne.modeler.ProjectController; -import org.apache.cayenne.map.QueryDescriptor; +import org.apache.cayenne.modeler.dialog.db.model.*; import org.apache.cayenne.util.CayenneMapEntry; /** @@ -67,6 +68,7 @@ public final class CellRenderers { protected static ImageIcon procedureIcon; protected static ImageIcon queryIcon; protected static ImageIcon embeddableIcon; + protected static ImageIcon catalogIcon; static { domainIcon = ModelerUtil.buildIcon("icon-dom.gif"); @@ -79,6 +81,7 @@ public final class CellRenderers { relationshipIcon = ModelerUtil.buildIcon("icon-relationship.gif"); attributeIcon = ModelerUtil.buildIcon("icon-attribute.gif"); embeddableIcon = ModelerUtil.buildIcon("icon-embeddable.gif"); + catalogIcon = ModelerUtil.buildIcon("icon-open.gif"); } public static ImageIcon iconForObject(Object object) { @@ -119,7 +122,18 @@ public final class CellRenderers { else if (object instanceof Embeddable) { return embeddableIcon; } - + else if (object instanceof DBColumn) { + return attributeIcon; + } + else if (object instanceof DBProcedure) { + return procedureIcon; + } + else if (object instanceof DBEntity) { + return dbEntityIcon; + } + else if (object instanceof DBCatalog) { + return catalogIcon; + } return null; } http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/dialog/db/templateXML.xml ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/dialog/db/templateXML.xml b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/dialog/db/templateXML.xml new file mode 100644 index 0000000..f911b05 --- /dev/null +++ b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/dialog/db/templateXML.xml @@ -0,0 +1,16 @@ +<reverseEngineering> + <skipRelationshipsLoading>false</skipRelationshipsLoading> + <skipPrimaryKeyLoading>false</skipPrimaryKeyLoading> + <catalog/> + <catalog name=""/> + <catalog name=""> + <includeTable/> + <includeTable pattern=""/> + <includeTable pattern=""> + <includeColumn pattern=""/> + <excludeColumn pattern=""/> + </includeTable> + <excludeTable/> + <excludeTable pattern=""/> + </catalog> +</reverseEngineering> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java ---------------------------------------------------------------------- diff --git a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java index 0d3376f..864c63f 100644 --- a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java +++ b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java @@ -30,10 +30,10 @@ import org.apache.cayenne.tools.configuration.ToolsModule; import org.apache.cayenne.tools.dbimport.DbImportAction; import org.apache.cayenne.tools.dbimport.DbImportConfiguration; import org.apache.cayenne.tools.dbimport.DbImportModule; -import org.apache.cayenne.tools.dbimport.config.Catalog; -import org.apache.cayenne.tools.dbimport.config.FiltersConfigBuilder; -import org.apache.cayenne.tools.dbimport.config.ReverseEngineering; -import org.apache.cayenne.tools.dbimport.config.Schema; +import org.apache.cayenne.dbimport.Catalog; +import org.apache.cayenne.dbimport.FiltersConfigBuilder; +import org.apache.cayenne.dbimport.ReverseEngineering; +import org.apache.cayenne.dbimport.Schema; import org.apache.cayenne.util.Util; import org.apache.commons.logging.Log; import org.apache.maven.plugin.AbstractMojo; @@ -41,7 +41,6 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import javax.sql.DataSource; -import java.io.File; /** * Maven mojo to reverse engineer datamap from DB. http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java ---------------------------------------------------------------------- diff --git a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java index 4ca2190..7061916 100644 --- a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java +++ b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java @@ -18,18 +18,17 @@ ****************************************************************/ package org.apache.cayenne.tools; -import static org.apache.cayenne.tools.dbimport.config.DefaultReverseEngineeringLoaderTest.*; +import static org.apache.cayenne.dbimport.DefaultReverseEngineeringLoaderTest.*; import org.apache.cayenne.access.loader.filters.FiltersConfig; import org.apache.cayenne.access.loader.filters.IncludeTableFilter; import org.apache.cayenne.access.loader.filters.PatternFilter; import org.apache.cayenne.access.loader.filters.TableFilter; import org.apache.cayenne.tools.dbimport.DbImportConfiguration; -import org.apache.cayenne.tools.dbimport.config.Schema; +import org.apache.cayenne.dbimport.Schema; import org.apache.maven.plugin.testing.AbstractMojoTestCase; import org.junit.Test; -import java.util.Collections; import java.util.TreeSet; import java.util.regex.Pattern; http://git-wip-us.apache.org/repos/asf/cayenne/blob/fe82b47e/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java ---------------------------------------------------------------------- diff --git a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java index 858d75b..7365a6b 100644 --- a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java +++ b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java @@ -21,9 +21,9 @@ package org.apache.cayenne.tools; import org.apache.cayenne.test.jdbc.SQLReader; import org.apache.cayenne.test.resource.ResourceUtil; import org.apache.cayenne.tools.dbimport.DbImportConfiguration; -import org.apache.cayenne.tools.dbimport.config.Catalog; -import org.apache.cayenne.tools.dbimport.config.IncludeTable; -import org.apache.cayenne.tools.dbimport.config.Schema; +import org.apache.cayenne.dbimport.Catalog; +import org.apache.cayenne.dbimport.IncludeTable; +import org.apache.cayenne.dbimport.Schema; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.testing.AbstractMojoTestCase; import org.codehaus.plexus.util.FileUtils;