2 * Copyright (C) 2007-2012 Argeo GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.slc
.client
.ui
.dist
.views
;
18 import org
.apache
.commons
.logging
.Log
;
19 import org
.apache
.commons
.logging
.LogFactory
;
20 import org
.argeo
.ArgeoException
;
21 import org
.argeo
.slc
.client
.ui
.dist
.DistPlugin
;
22 import org
.argeo
.slc
.jcr
.SlcNames
;
23 import org
.argeo
.slc
.jcr
.SlcTypes
;
24 import org
.eclipse
.swt
.SWT
;
25 import org
.eclipse
.swt
.custom
.SashForm
;
26 import org
.eclipse
.swt
.layout
.FillLayout
;
27 import org
.eclipse
.swt
.layout
.GridData
;
28 import org
.eclipse
.swt
.layout
.GridLayout
;
29 import org
.eclipse
.swt
.widgets
.Button
;
30 import org
.eclipse
.swt
.widgets
.Composite
;
31 import org
.eclipse
.swt
.widgets
.Event
;
32 import org
.eclipse
.swt
.widgets
.Label
;
33 import org
.eclipse
.swt
.widgets
.Listener
;
34 import org
.eclipse
.swt
.widgets
.Text
;
36 /** Query SLC Repo to get some artifacts given some predefined parameters */
37 public class QueryBundlesForm
extends AbstractQueryArtifactsView
implements
39 private static final Log log
= LogFactory
.getLog(QueryBundlesForm
.class);
40 public static final String ID
= DistPlugin
.ID
+ ".queryBundlesForm";
43 private Button executeBtn
;
44 private Text symbolicName
;
45 private Text importedPackage
;
46 private Text exportedPackage
;
47 private SashForm sashForm
;
49 private Composite top
, bottom
;
52 public void createPartControl(Composite parent
) {
54 sashForm
= new SashForm(parent
, SWT
.VERTICAL
);
55 sashForm
.setSashWidth(4);
56 // Enable the different parts to fill the whole page when the tab is
58 sashForm
.setLayout(new FillLayout());
60 top
= new Composite(sashForm
, SWT
.NONE
);
61 top
.setLayout(new GridLayout(1, false));
63 bottom
= new Composite(sashForm
, SWT
.NONE
);
64 bottom
.setLayout(new GridLayout(1, false));
66 sashForm
.setWeights(new int[] { 25, 75 });
69 createResultPart(bottom
);
72 public void createQueryForm(Composite parent
) {
76 GridLayout gl
= new GridLayout(2, false);
81 lbl
= new Label(parent
, SWT
.SINGLE
);
82 lbl
.setText("Symbolic name");
83 symbolicName
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
);
84 gd
= new GridData(GridData
.FILL_HORIZONTAL
);
85 gd
.grabExcessHorizontalSpace
= true;
86 symbolicName
.setLayoutData(gd
);
89 lbl
= new Label(parent
, SWT
.SINGLE
);
90 lbl
.setText("Imported package");
91 importedPackage
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
);
92 gd
= new GridData(GridData
.FILL_HORIZONTAL
);
93 gd
.grabExcessHorizontalSpace
= true;
94 importedPackage
.setLayoutData(gd
);
97 lbl
= new Label(parent
, SWT
.SINGLE
);
98 lbl
.setText("Exported package");
99 exportedPackage
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
);
100 gd
= new GridData(GridData
.FILL_HORIZONTAL
);
101 gd
.grabExcessHorizontalSpace
= true;
102 exportedPackage
.setLayoutData(gd
);
104 executeBtn
= new Button(parent
, SWT
.PUSH
);
105 executeBtn
.setText("Search");
107 gd
.horizontalSpan
= 2;
108 executeBtn
.setLayoutData(gd
);
110 Listener executeListener
= new Listener() {
111 public void handleEvent(Event event
) {
115 executeBtn
.addListener(SWT
.Selection
, executeListener
);
118 public void refreshQuery() {
119 String queryStr
= generateStatement();
120 executeQuery(queryStr
);
125 private String
generateStatement() {
128 boolean hasFirstClause
= false;
129 boolean ipClause
= importedPackage
.getText() != null
130 && !importedPackage
.getText().trim().equals("");
131 boolean epClause
= exportedPackage
.getText() != null
132 && !exportedPackage
.getText().trim().equals("");
134 StringBuffer sb
= new StringBuffer();
136 sb
.append("select " + SBA
+ ".*, " + SAVB
+ ".* ");
137 sb
.append(" from " + SAVB
);
140 sb
.append(" inner join ");
142 sb
.append(" on isdescendantnode(" + SBA
+ ", " + SAVB
+ ") ");
144 sb
.append(" inner join ");
146 sb
.append(" on isdescendantnode(" + SIP
+ ", " + SBA
+ ") ");
150 sb
.append(" inner join ");
152 sb
.append(" on isdescendantnode(" + SEP
+ ", " + SBA
+ ") ");
156 sb
.append(" where ");
157 if (symbolicName
.getText() != null
158 && !symbolicName
.getText().trim().equals("")) {
159 sb
.append(SBA
+ ".[" + SLC_SYMBOLIC_NAME
+ "] like '"
160 + symbolicName
.getText().replace('*', '%') + "'");
161 hasFirstClause
= true;
167 sb
.append(SIP
+ ".[" + SLC_NAME
+ "] like '"
168 + importedPackage
.getText().replace('*', '%') + "'");
169 hasFirstClause
= true;
175 sb
.append(SEP
+ ".[" + SLC_NAME
+ "] like '"
176 + exportedPackage
.getText().replace('*', '%') + "'");
178 return sb
.toString();
179 } catch (Exception e
) {
180 throw new ArgeoException(
181 "Cannot generate where statement to get artifacts", e
);
186 public void setFocus() {
187 executeBtn
.setFocus();