1 package org
.argeo
.slc
.client
.ui
.dist
.views
;
3 import org
.apache
.commons
.logging
.Log
;
4 import org
.apache
.commons
.logging
.LogFactory
;
5 import org
.argeo
.ArgeoException
;
6 import org
.argeo
.slc
.client
.ui
.dist
.DistPlugin
;
7 import org
.argeo
.slc
.jcr
.SlcNames
;
8 import org
.eclipse
.swt
.SWT
;
9 import org
.eclipse
.swt
.custom
.SashForm
;
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 Log log
= LogFactory
.getLog(QueryBundlesForm
.class);
23 public static final String ID
= DistPlugin
.ID
+ ".queryBundlesForm";
26 private Button executeBtn
;
27 private Text symbolicName
;
28 private Text importedPackage
;
29 private Text exportedPackage
;
30 private SashForm sashForm
;
33 final static String SBA
= "sba";
34 final static String SIP
= "sip";
35 final static String SEP
= "sep";
37 private Composite top
, bottom
;
40 public void createPartControl(Composite parent
) {
42 sashForm
= new SashForm(parent
, SWT
.VERTICAL
);
43 sashForm
.setSashWidth(4);
44 sashForm
.setLayout(new GridLayout(1, false));
46 top
= new Composite(sashForm
, SWT
.NONE
);
47 top
.setLayout(new GridLayout(1, false));
49 bottom
= new Composite(sashForm
, SWT
.NONE
);
50 bottom
.setLayout(new GridLayout(1, false));
52 sashForm
.setWeights(new int[] { 25, 75 });
55 createResultPart(bottom
);
58 public void createQueryForm(Composite parent
) {
62 GridLayout gl
= new GridLayout(2, false);
67 lbl
= new Label(parent
, SWT
.SINGLE
);
68 lbl
.setText("Bundle name: ");
69 symbolicName
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
);
72 lbl
= new Label(parent
, SWT
.SINGLE
);
73 lbl
.setText("Imported package: ");
74 importedPackage
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
);
77 lbl
= new Label(parent
, SWT
.SINGLE
);
78 lbl
.setText("Exported package: ");
79 exportedPackage
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
);
81 executeBtn
= new Button(parent
, SWT
.PUSH
);
82 executeBtn
.setText("Search");
84 gd
.horizontalSpan
= 2;
85 executeBtn
.setLayoutData(gd
);
87 Listener executeListener
= new Listener() {
88 public void handleEvent(Event event
) {
92 executeBtn
.addListener(SWT
.Selection
, executeListener
);
95 public void refreshQuery() {
96 String queryStr
= generateStatement();
97 executeQuery(queryStr
);
102 private String
generateStatement() {
105 boolean hasFirstClause
= false;
106 boolean ipClause
= importedPackage
.getText() != null
107 && !importedPackage
.getText().trim().equals("");
108 boolean epClause
= exportedPackage
.getText() != null
109 && !exportedPackage
.getText().trim().equals("");
111 StringBuffer sb
= new StringBuffer();
113 sb
.append("select " + SBA
+ ".* ");
115 sb
.append(", " + SIP
+ ".* ");
117 sb
.append(", " + SEP
+ ".* ");
119 sb
.append(" from [");
120 sb
.append(SLC_BUNDLE_ARTIFACT
);
121 sb
.append("] as " + SBA
+ " ");
125 sb
.append(" inner join [");
126 sb
.append(SLC_IMPORTED_PACKAGE
);
127 sb
.append("] as " + SIP
+ " on isdescendantnode(" + SIP
+ ", "
132 sb
.append(" inner join [");
133 sb
.append(SLC_EXPORTED_PACKAGE
);
134 sb
.append("] as " + SEP
+ " on isdescendantnode(" + SEP
+ ", "
139 sb
.append(" where ");
140 if (symbolicName
.getText() != null
141 && !symbolicName
.getText().trim().equals("")) {
142 sb
.append("sba.[" + SLC_SYMBOLIC_NAME
+ "] like '"
143 + symbolicName
.getText().replace('*', '%') + "'");
144 hasFirstClause
= true;
150 sb
.append(SIP
+ ".[" + SLC_NAME
+ "] like '"
151 + importedPackage
.getText().replace('*', '%') + "'");
152 hasFirstClause
= true;
158 sb
.append(SEP
+ ".[" + SLC_NAME
+ "] like '"
159 + exportedPackage
.getText().replace('*', '%') + "'");
162 if (log
.isDebugEnabled())
163 log
.debug("Statement : " + sb
.toString());
165 return sb
.toString();
166 } catch (Exception e
) {
167 throw new ArgeoException(
168 "Cannot generate where statement to get artifacts", e
);
173 public void setFocus() {
174 executeBtn
.setFocus();