]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/views/QueryBundlesForm.java
Fix maven dependencies
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.client.ui.dist / src / main / java / org / argeo / slc / client / ui / dist / views / QueryBundlesForm.java
1 package org.argeo.slc.client.ui.dist.views;
2
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;
18
19 /** Query SLC Repo to get some artifacts given some predefined parameters */
20 public class QueryBundlesForm extends AbstractQueryArtifactsView implements
21 SlcNames {
22 private static final Log log = LogFactory.getLog(QueryBundlesForm.class);
23 public static final String ID = DistPlugin.ID + ".queryArtifactsForm";
24
25 // widgets
26 private Button executeBtn;
27 private Text symbolicName;
28 private Text importedPackage;
29 private Text exportedPackage;
30 private SashForm sashForm;
31
32 private Composite top, bottom;
33
34 @Override
35 public void createPartControl(Composite parent) {
36
37 sashForm = new SashForm(parent, SWT.VERTICAL);
38 sashForm.setSashWidth(4);
39 sashForm.setLayout(new GridLayout(1, false));
40
41 top = new Composite(sashForm, SWT.NONE);
42 top.setLayout(new GridLayout(1, false));
43
44 bottom = new Composite(sashForm, SWT.NONE);
45 bottom.setLayout(new GridLayout(1, false));
46
47 sashForm.setWeights(new int[] { 25, 75 });
48
49 createQueryForm(top);
50 createResultPart(bottom);
51 }
52
53 public void createQueryForm(Composite parent) {
54 Label lbl;
55 GridData gd;
56
57 GridLayout gl = new GridLayout(2, false);
58 gl.marginTop = 5;
59 parent.setLayout(gl);
60
61 // Bundle Name
62 lbl = new Label(parent, SWT.SINGLE);
63 lbl.setText("Bundle name: ");
64 symbolicName = new Text(parent, SWT.SINGLE | SWT.BORDER);
65
66 // imported package
67 lbl = new Label(parent, SWT.SINGLE);
68 lbl.setText("Imported package: ");
69 importedPackage = new Text(parent, SWT.SINGLE | SWT.BORDER);
70
71 // exported package
72 lbl = new Label(parent, SWT.SINGLE);
73 lbl.setText("Exported package: ");
74 exportedPackage = new Text(parent, SWT.SINGLE | SWT.BORDER);
75
76 executeBtn = new Button(parent, SWT.PUSH);
77 executeBtn.setText("Search");
78 gd = new GridData();
79 gd.horizontalSpan = 2;
80 executeBtn.setLayoutData(gd);
81
82 Listener executeListener = new Listener() {
83 public void handleEvent(Event event) {
84 refreshQuery();
85 }
86 };
87 executeBtn.addListener(SWT.Selection, executeListener);
88 }
89
90 public void refreshQuery() {
91 String queryStr = generateStatement();
92 executeQuery(queryStr);
93 bottom.layout();
94 sashForm.layout();
95 }
96
97 private String generateStatement() {
98 try {
99 // shortcuts
100 boolean hasFirstClause = false;
101 boolean ipClause = importedPackage.getText() != null
102 && !importedPackage.getText().trim().equals("");
103 boolean epClause = exportedPackage.getText() != null
104 && !exportedPackage.getText().trim().equals("");
105
106 StringBuffer sb = new StringBuffer();
107 // Select
108 sb.append("select p.* ");
109
110 // join
111 if (ipClause) {
112 sb.append(" from [");
113 sb.append(SLC_BUNDLE_ARTIFACT);
114 sb.append("] as sa ");
115 }
116
117 sb.append(" inner join [");
118 sb.append(SLC_BUNDLE_ARTIFACT);
119 sb.append("] as sa on isdescendantnode(sa, sba)");
120
121 // where
122 sb.append(" where ");
123
124 if (symbolicName.getText() != null
125 && !symbolicName.getText().trim().equals("")) {
126 sb.append("sba.[" + SLC_SYMBOLIC_NAME + "] like '"
127 + symbolicName.getText().replace('*', '%') + "'");
128 hasFirstClause = true;
129 }
130
131 if (ipClause) {
132 if (hasFirstClause)
133 sb.append(" AND ");
134 sb.append("[" + SLC_ARTIFACT_ID + "] like '"
135 + importedPackage.getText().replace('*', '%') + "'");
136 hasFirstClause = true;
137 }
138
139 if (epClause) {
140 if (hasFirstClause)
141 sb.append(" AND ");
142 sb.append("[" + SLC_ARTIFACT_ID + "] like '"
143 + exportedPackage.getText().replace('*', '%') + "'");
144 hasFirstClause = true;
145 }
146
147 return sb.toString();
148 } catch (Exception e) {
149 throw new ArgeoException(
150 "Cannot generate where statement to get artifacts", e);
151 }
152 }
153
154 @Override
155 public void setFocus() {
156 executeBtn.setFocus();
157 }
158 }