1 package org
.argeo
.slc
.client
.ui
.dist
.views
;
3 import org
.argeo
.slc
.SlcException
;
4 import org
.argeo
.slc
.SlcNames
;
5 import org
.argeo
.slc
.SlcTypes
;
6 import org
.argeo
.slc
.client
.ui
.dist
.DistPlugin
;
7 import org
.eclipse
.swt
.SWT
;
8 import org
.eclipse
.swt
.custom
.SashForm
;
9 import org
.eclipse
.swt
.layout
.FillLayout
;
10 import org
.eclipse
.swt
.layout
.GridData
;
11 import org
.eclipse
.swt
.layout
.GridLayout
;
12 import org
.eclipse
.swt
.widgets
.Button
;
13 import org
.eclipse
.swt
.widgets
.Composite
;
14 import org
.eclipse
.swt
.widgets
.Event
;
15 import org
.eclipse
.swt
.widgets
.Label
;
16 import org
.eclipse
.swt
.widgets
.Listener
;
17 import org
.eclipse
.swt
.widgets
.Text
;
19 /** Query SLC Repo to get some artifacts given some predefined parameters */
20 public class QueryBundlesForm
extends AbstractQueryArtifactsView
implements
22 // private static final CmsLog log = CmsLog.getLog(QueryBundlesForm.class);
23 public static final String ID
= DistPlugin
.PLUGIN_ID
+ ".queryBundlesForm";
26 private Button executeBtn
;
27 private Text symbolicName
;
28 private Text importedPackage
;
29 private Text exportedPackage
;
30 private SashForm sashForm
;
32 private Composite top
, bottom
;
35 public void createPartControl(Composite parent
) {
37 sashForm
= new SashForm(parent
, SWT
.VERTICAL
);
38 sashForm
.setSashWidth(4);
39 // Enable the different parts to fill the whole page when the tab is
41 sashForm
.setLayout(new FillLayout());
43 top
= new Composite(sashForm
, SWT
.NONE
);
44 top
.setLayout(new GridLayout(1, false));
46 bottom
= new Composite(sashForm
, SWT
.NONE
);
47 bottom
.setLayout(new GridLayout(1, false));
49 sashForm
.setWeights(new int[] { 25, 75 });
52 createResultPart(bottom
);
55 public void createQueryForm(Composite parent
) {
59 GridLayout gl
= new GridLayout(2, false);
64 lbl
= new Label(parent
, SWT
.SINGLE
);
65 lbl
.setText("Symbolic name");
66 symbolicName
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
);
67 gd
= new GridData(GridData
.FILL_HORIZONTAL
);
68 gd
.grabExcessHorizontalSpace
= true;
69 symbolicName
.setLayoutData(gd
);
72 lbl
= new Label(parent
, SWT
.SINGLE
);
73 lbl
.setText("Imported package");
74 importedPackage
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
);
75 gd
= new GridData(GridData
.FILL_HORIZONTAL
);
76 gd
.grabExcessHorizontalSpace
= true;
77 importedPackage
.setLayoutData(gd
);
80 lbl
= new Label(parent
, SWT
.SINGLE
);
81 lbl
.setText("Exported package");
82 exportedPackage
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
);
83 gd
= new GridData(GridData
.FILL_HORIZONTAL
);
84 gd
.grabExcessHorizontalSpace
= true;
85 exportedPackage
.setLayoutData(gd
);
87 executeBtn
= new Button(parent
, SWT
.PUSH
);
88 executeBtn
.setText("Search");
90 gd
.horizontalSpan
= 2;
91 executeBtn
.setLayoutData(gd
);
93 Listener executeListener
= new Listener() {
94 private static final long serialVersionUID
= 6267263421349073712L;
96 public void handleEvent(Event event
) {
100 executeBtn
.addListener(SWT
.Selection
, executeListener
);
103 public void refreshQuery() {
104 String queryStr
= generateStatement();
105 executeQuery(queryStr
);
110 private String
generateStatement() {
113 boolean hasFirstClause
= false;
114 boolean ipClause
= importedPackage
.getText() != null
115 && !importedPackage
.getText().trim().equals("");
116 boolean epClause
= exportedPackage
.getText() != null
117 && !exportedPackage
.getText().trim().equals("");
119 StringBuffer sb
= new StringBuffer();
121 sb
.append("select " + SBA
+ ".*, " + SAVB
+ ".* ");
122 sb
.append(" from " + SAVB
);
125 sb
.append(" inner join ");
127 sb
.append(" on isdescendantnode(" + SBA
+ ", " + SAVB
+ ") ");
129 sb
.append(" inner join ");
131 sb
.append(" on isdescendantnode(" + SIP
+ ", " + SBA
+ ") ");
135 sb
.append(" inner join ");
137 sb
.append(" on isdescendantnode(" + SEP
+ ", " + SBA
+ ") ");
141 sb
.append(" where ");
142 if (symbolicName
.getText() != null
143 && !symbolicName
.getText().trim().equals("")) {
144 sb
.append(SBA
+ ".[" + SLC_SYMBOLIC_NAME
+ "] like '"
145 + symbolicName
.getText().replace('*', '%') + "'");
146 hasFirstClause
= true;
152 sb
.append(SIP
+ ".[" + SLC_NAME
+ "] like '"
153 + importedPackage
.getText().replace('*', '%') + "'");
154 hasFirstClause
= true;
160 sb
.append(SEP
+ ".[" + SLC_NAME
+ "] like '"
161 + exportedPackage
.getText().replace('*', '%') + "'");
163 return sb
.toString();
164 } catch (Exception e
) {
165 throw new SlcException(
166 "Cannot generate where statement to get artifacts", e
);
171 public void setFocus() {
172 executeBtn
.setFocus();