Skip to content

Commit 85f314b

Browse files
author
mcasters
committed
PDI-2365 : Repository : simplify, abstract, turn into an interface (version browser toolbar icon)
git-svn-id: svn://source.pentaho.org/svnkettleroot/Kettle/trunk@10718 5fb7f6ec-07c1-534a-b4ca-9155e429e800
1 parent 46a9534 commit 85f314b

File tree

49 files changed

+1515
-2503
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1515
-2503
lines changed

src-core/org/pentaho/di/i18n/messages/messages_en_US.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ System.CompanyInfo=(c) 2001-2008 Pentaho Corporation
2626
System.Dialog.EnterPreviewSize.Message=Enter the number of rows you would like to preview\:
2727
System.ProductWebsiteUrl=www.pentaho.org
2828
System.Label.Extension=Extension
29+
System.Button.Open=\ &Open
2930
System.Button.Cancel=\ &Cancel
3031
System.Label.Filename=File name
3132
System.Button.Edit=&Edit

src-core/org/pentaho/di/repository/RepositoryElementInterface.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,17 @@
1515
* @author matt
1616
*
1717
*/
18-
public interface RepositoryElementInterface {
18+
public interface RepositoryElementInterface extends RepositoryElementLocationInterface {
1919
public void setRepositoryDirectory(RepositoryDirectory repositoryDirectory);
20-
public RepositoryDirectory getRepositoryDirectory();
2120

2221
public void setName(String name);
23-
public String getName();
2422

2523
public void setDescription(String description);
2624
public String getDescription();
2725

2826
public void setObjectId(ObjectId id);
2927
public ObjectId getObjectId();
30-
31-
public String getRepositoryElementType();
32-
28+
3329
public RepositoryLock getRepositoryLock();
3430

3531
/**
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.pentaho.di.repository;
2+
3+
public interface RepositoryElementLocationInterface {
4+
public String getName();
5+
public RepositoryDirectory getRepositoryDirectory();
6+
public RepositoryObjectType getRepositoryElementType();
7+
}

src-db/org/pentaho/di/core/database/DatabaseMeta.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.pentaho.di.repository.RepositoryDirectory;
4141
import org.pentaho.di.repository.RepositoryElementInterface;
4242
import org.pentaho.di.repository.RepositoryLock;
43+
import org.pentaho.di.repository.RepositoryObjectType;
4344
import org.pentaho.di.shared.SharedObjectBase;
4445
import org.pentaho.di.shared.SharedObjectInterface;
4546
import org.w3c.dom.Node;
@@ -61,7 +62,7 @@ public class DatabaseMeta
6162

6263
public static final String XML_TAG = "connection";
6364

64-
public static final String REPOSITORY_ELEMENT_TYPE = "database";
65+
public static final RepositoryObjectType REPOSITORY_ELEMENT_TYPE = RepositoryObjectType.DATABASE;
6566

6667
// Comparator for sorting databases alphabetically by name
6768
public static final Comparator<DatabaseMeta> comparator = new Comparator<DatabaseMeta>(){
@@ -2443,7 +2444,7 @@ public void setRepositoryDirectory(RepositoryDirectory repositoryDirectory) {
24432444
throw new RuntimeException("Setting a directory on a database connection is not supported");
24442445
}
24452446

2446-
public String getRepositoryElementType() {
2447+
public RepositoryObjectType getRepositoryElementType() {
24472448
return REPOSITORY_ELEMENT_TYPE;
24482449
}
24492450

src-ui/org/pentaho/di/ui/core/dialog/EnterSelectionDialog.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,15 +148,18 @@ public String open()
148148
int margin = Const.MARGIN;
149149

150150
ToolBar treeTb = new ToolBar(shell, SWT.HORIZONTAL | SWT.FLAT);
151+
props.setLook(treeTb);
151152

152153
ToolItem wtfilter = new ToolItem(treeTb, SWT.SEPARATOR);
153154
Label wlfilter = new Label(treeTb, SWT.SEARCH);
155+
props.setLook(wlfilter);
154156
wlfilter.setText(BaseMessages.getString(PKG, "EnterSelectionDialog.FilterString.Label"));
155157
wtfilter.setControl(wlfilter);
156158
wtfilter.setWidth(60);
157159

158160
wfilter = new ToolItem(treeTb, SWT.SEPARATOR);
159161
searchText = new Text(treeTb, SWT.SEARCH | SWT.CANCEL);
162+
props.setLook(searchText);
160163
searchText.setToolTipText(BaseMessages.getString(PKG, "EnterSelectionDialog.FilterString.ToolTip"));
161164
wfilter.setControl(searchText);
162165
wfilter.setWidth(120);

src-ui/org/pentaho/di/ui/core/dialog/EnterStringDialog.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public String open()
8686
shell.setLayout(formLayout);
8787
shell.setImage(GUIResource.getInstance().getImageSpoon());
8888
shell.setText(shellText);
89-
int length = Const.LENGTH;
89+
9090
int margin = Const.MARGIN;
9191

9292
// The String line...
@@ -103,7 +103,7 @@ public String open()
103103
fdString=new FormData();
104104
fdString.left = new FormAttachment(0, 0);
105105
fdString.top = new FormAttachment(wlString, margin);
106-
fdString.right= new FormAttachment(0, length);
106+
fdString.right= new FormAttachment(100, -margin);
107107
wString.setLayoutData(fdString);
108108

109109
wString.addModifyListener(new ModifyListener() {

src-ui/org/pentaho/di/ui/core/gui/GUIResource.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,9 @@ public class GUIResource
240240
private Image imageInfoHop;
241241

242242
private Image imageWarning;
243-
243+
244+
private Image imageVersionBrowser;
245+
244246
private Image imageNew;
245247
private Image imageEdit;
246248
private Image imageDelete;
@@ -410,6 +412,7 @@ private void dispose(boolean reload)
410412
imageErrorHop.dispose();
411413
imageInfoHop.dispose();
412414
imageWarning.dispose();
415+
imageVersionBrowser.dispose();
413416
imageExpandAll.dispose();
414417
imageSearchSmall.dispose();
415418
imageViewPanel.dispose();
@@ -630,6 +633,7 @@ private void loadCommonImages()
630633
imageErrorHop = ImageUtil.getImageAsResource(display, BasePropertyHandler.getProperty("ErrorHop_image")); // , "ui/images/error-hop.png;
631634
imageInfoHop = ImageUtil.getImageAsResource(display, BasePropertyHandler.getProperty("InfoHop_image")); // , "ui/images/info-hop.png;
632635
imageWarning = ImageUtil.getImageAsResource(display, BasePropertyHandler.getProperty("Warning_image")); // , "ui/images/warning.png;
636+
imageVersionBrowser = ImageUtil.getImageAsResource(display, BasePropertyHandler.getProperty("VersionBrowser_image")); // , "ui/images/version-history.png;
633637

634638
imageNew= ImageUtil.getImageAsResource(display, BasePropertyHandler.getProperty("New_image")); // , "ui/images/generic-new.png;
635639
imageEdit= ImageUtil.getImageAsResource(display, BasePropertyHandler.getProperty("Edit_image")); // , "ui/images/generic-edit.png;
@@ -1603,6 +1607,10 @@ public Image getImageWarning(){
16031607
return imageWarning;
16041608
}
16051609

1610+
public Image getImageVersionBrowser(){
1611+
return imageVersionBrowser;
1612+
}
1613+
16061614
public Image getImageNew(){
16071615
return imageNew;
16081616
}

src-ui/org/pentaho/di/ui/job/dialog/JobLoadProgressDialog.java

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,9 @@
2424
import org.eclipse.jface.operation.IRunnableWithProgress;
2525
import org.eclipse.swt.widgets.Shell;
2626
import org.pentaho.di.core.ProgressMonitorAdapter;
27-
import org.pentaho.di.core.Props;
2827
import org.pentaho.di.core.exception.KettleException;
29-
import org.pentaho.di.core.logging.LogWriter;
3028
import org.pentaho.di.job.JobMeta;
31-
import org.pentaho.di.repository.Repository;
29+
import org.pentaho.di.repository.Repository;
3230
import org.pentaho.di.repository.RepositoryDirectory;
3331
import org.pentaho.di.ui.core.dialog.ErrorDialog;
3432

@@ -46,25 +44,18 @@ public class JobLoadProgressDialog
4644
private String jobname;
4745
private RepositoryDirectory repdir;
4846
private JobMeta jobInfo;
47+
private String versionLabel;
4948

50-
/**
51-
* Creates a new dialog that will handle the wait while loading a job...
52-
* @deprecated please use the constructor version without log or props
53-
*/
54-
public JobLoadProgressDialog(LogWriter log, Props props, Shell shell, Repository rep, String jobname, RepositoryDirectory repdir)
55-
{
56-
this(shell, rep, jobname, repdir);
57-
}
58-
5949
/**
6050
* Creates a new dialog that will handle the wait while loading a job...
6151
*/
62-
public JobLoadProgressDialog(Shell shell, Repository rep, String jobname, RepositoryDirectory repdir)
52+
public JobLoadProgressDialog(Shell shell, Repository rep, String jobname, RepositoryDirectory repdir, String versionLabel)
6353
{
6454
this.shell = shell;
6555
this.rep = rep;
6656
this.jobname = jobname;
6757
this.repdir = repdir;
58+
this.versionLabel = versionLabel;
6859

6960
this.jobInfo = null;
7061
}
@@ -75,13 +66,9 @@ public JobMeta open()
7566
{
7667
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException
7768
{
78-
// This is running in a new process: copy some KettleVariables info
79-
// LocalVariables.getInstance().createKettleVariables(Thread.currentThread(), kettleVariables.getLocalThread(), true);
80-
// --> don't set variables if not running in different thread --> pmd.run(true,true, op);
81-
8269
try
8370
{
84-
jobInfo = rep.loadJob(jobname, repdir, new ProgressMonitorAdapter(monitor), null); // reads last version
71+
jobInfo = rep.loadJob(jobname, repdir, new ProgressMonitorAdapter(monitor), versionLabel);
8572
}
8673
catch(KettleException e)
8774
{

src-ui/org/pentaho/di/ui/repository/dialog/RepositoryExplorerDialog.java

Lines changed: 77 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.io.File;
1717
import java.io.FileOutputStream;
1818
import java.io.IOException;
19+
import java.lang.reflect.Constructor;
1920

2021
import org.eclipse.swt.SWT;
2122
import org.eclipse.swt.custom.TreeEditor;
@@ -75,7 +76,11 @@
7576
import org.pentaho.di.repository.Repository;
7677
import org.pentaho.di.repository.RepositoryCapabilities;
7778
import org.pentaho.di.repository.RepositoryDirectory;
79+
import org.pentaho.di.repository.RepositoryElementLocationInterface;
80+
import org.pentaho.di.repository.RepositoryLoader;
7881
import org.pentaho.di.repository.RepositoryMeta;
82+
import org.pentaho.di.repository.RepositoryObjectType;
83+
import org.pentaho.di.repository.RepositoryPluginMeta;
7984
import org.pentaho.di.repository.RepositorySecurityProvider;
8085
import org.pentaho.di.repository.UserInfo;
8186
import org.pentaho.di.trans.TransMeta;
@@ -125,27 +130,35 @@ public interface RepositoryExplorerCallback {
125130
*
126131
*/
127132
public class RepositoryObjectReference {
128-
private String type; // Type of object
133+
private RepositoryObjectType type; // Type of object
129134
private RepositoryDirectory directory; // The directory to which it belongs.
130-
private String name; // name of object being referenced
135+
private String name; // name of object being referenced
136+
private String versionLabel; // the version to be loaded
137+
138+
public RepositoryObjectReference(RepositoryObjectType type, RepositoryDirectory dir, String name) {
139+
this(type, dir, name, null);
140+
}
131141

132-
public RepositoryObjectReference(String type, RepositoryDirectory dir, String name) {
142+
public RepositoryObjectReference(RepositoryObjectType type, RepositoryDirectory dir, String name, String versionLabel) {
133143
this.type = type;
134144
this.directory = dir;
135-
this.name = name;
145+
this.name = name;
146+
this.versionLabel = versionLabel;
136147
}
137-
138-
public RepositoryDirectory getDirectory()
148+
public RepositoryDirectory getDirectory()
139149
{
140150
return directory;
141151
}
142152
public String getName()
143153
{
144154
return name;
145155
}
146-
public String getType()
156+
public RepositoryObjectType getType()
147157
{
148158
return type;
159+
}
160+
public String getVersionLabel() {
161+
return versionLabel;
149162
}
150163
}
151164

@@ -963,6 +976,18 @@ public void widgetSelected(SelectionEvent e)
963976
}
964977
}
965978
);
979+
// Transformation history...
980+
MenuItem miHist = new MenuItem(mTree, SWT.PUSH);
981+
miHist.setText(BaseMessages.getString(PKG, "RepositoryExplorerDialog.PopupMenu.Transformations.History")); //$NON-NLS-1$
982+
miHist.addSelectionListener(
983+
new SelectionAdapter()
984+
{
985+
public void widgetSelected(SelectionEvent e)
986+
{
987+
showTransformationVersions(item, repdir);
988+
}
989+
}
990+
);
966991
// Delete transformation
967992
MenuItem miDel = new MenuItem(mTree, SWT.PUSH);
968993
miDel.setText(BaseMessages.getString(PKG, "RepositoryExplorerDialog.PopupMenu.Transformations.Delete")); //$NON-NLS-1$
@@ -1441,7 +1466,7 @@ public void refreshTree()
14411466

14421467
public void openTransformation(String name, RepositoryDirectory repdir)
14431468
{
1444-
lastOpened = new RepositoryObjectReference(STRING_TRANSFORMATIONS, repdir, name);
1469+
lastOpened = new RepositoryObjectReference(RepositoryObjectType.TRANSFORMATION, repdir, name);
14451470
if (callback != null) {
14461471
if (callback.open(lastOpened)) {
14471472
close();
@@ -1450,11 +1475,33 @@ public void openTransformation(String name, RepositoryDirectory repdir)
14501475
else {
14511476
close();
14521477
}
1478+
}
1479+
1480+
public void showTransformationVersions(String name, RepositoryDirectory repdir)
1481+
{
1482+
try {
1483+
RepositoryVersionBrowserDialogInterface versionBrowserDialog = getVersionBrowserDialog(name, repdir, RepositoryObjectType.TRANSFORMATION);
1484+
1485+
String versionLabel = versionBrowserDialog.open();
1486+
if (versionLabel!=null) {
1487+
lastOpened = new RepositoryObjectReference(RepositoryObjectType.TRANSFORMATION, repdir, name, versionLabel);
1488+
if (callback != null) {
1489+
if (callback.open(lastOpened)) {
1490+
close();
1491+
}
1492+
}
1493+
else {
1494+
close();
1495+
}
1496+
}
1497+
} catch(Exception e) {
1498+
new ErrorDialog(shell, "Error browsing transformation history", "There was an error browsing the transformation history", e);
1499+
}
14531500
}
14541501

14551502
public void openJob(String name, RepositoryDirectory repdir)
14561503
{
1457-
lastOpened = new RepositoryObjectReference(STRING_JOBS, repdir, name);
1504+
lastOpened = new RepositoryObjectReference(RepositoryObjectType.JOB, repdir, name);
14581505
if (callback != null) {
14591506
if (callback.open(lastOpened)) {
14601507
close();
@@ -3129,5 +3176,25 @@ public void delCluster(String clusterName)
31293176
new ErrorDialog(shell, BaseMessages.getString(PKG, "RepositoryExplorerDialog.Cluster.Delete.UnexpectedError.Title"),
31303177
BaseMessages.getString(PKG, "RepositoryExplorerDialog.Cluster.Delete.UnexpectedError.Message"), e); //$NON-NLS-1$ //$NON-NLS-2$
31313178
}
3132-
}
3179+
}
3180+
3181+
protected RepositoryVersionBrowserDialogInterface getVersionBrowserDialog(final String name, final RepositoryDirectory repositoryDirectory, final RepositoryObjectType objectType) throws Exception {
3182+
return getVersionBrowserDialog(shell, rep, name, repositoryDirectory, objectType);
3183+
}
3184+
3185+
public static final RepositoryVersionBrowserDialogInterface getVersionBrowserDialog(Shell shell, Repository repository, final String name, final RepositoryDirectory repositoryDirectory, final RepositoryObjectType objectType) throws Exception {
3186+
3187+
RepositoryElementLocationInterface element = new RepositoryElementLocationInterface() {
3188+
public RepositoryObjectType getRepositoryElementType() { return objectType; }
3189+
public RepositoryDirectory getRepositoryDirectory() { return repositoryDirectory; }
3190+
public String getName() { return name; }
3191+
};
3192+
3193+
RepositoryPluginMeta pluginMeta = RepositoryLoader.getInstance().findPluginMeta( repository.getRepositoryMeta().getId() );
3194+
ClassLoader classLoader = RepositoryLoader.getInstance().getClassLoader(pluginMeta);
3195+
Class<?> dialogClass = classLoader.loadClass(pluginMeta.getVersionBrowserClassName());
3196+
Constructor<?> constructor = dialogClass.getConstructor(Shell.class, Integer.TYPE, Repository.class, RepositoryElementLocationInterface.class);
3197+
return (RepositoryVersionBrowserDialogInterface) constructor.newInstance(new Object[] { shell, Integer.valueOf(SWT.NONE), repository, element, });
3198+
}
3199+
31333200
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.pentaho.di.ui.repository.dialog;
2+
3+
4+
public interface RepositoryVersionBrowserDialogInterface {
5+
/**
6+
* Open the repository version browser dialog
7+
* @return the version selected
8+
*/
9+
public String open();
10+
}

0 commit comments

Comments
 (0)