Skip to content

Commit ac0532a

Browse files
committed
1 parent e121bfa commit ac0532a

File tree

21 files changed

+645
-67
lines changed

21 files changed

+645
-67
lines changed

com.ecmdeveloper.plugin.classes/src/com/ecmdeveloper/plugin/classes/views/ClassesViewContentProvider.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ private Object[] getAllVirtualFolders(Object parent) {
149149

150150
private Object[] getVirtualFolders(IObjectStore objectStore) {
151151

152+
if ( !objectStore.isConnected() ) {
153+
return null;
154+
}
155+
152156
ClassDescriptionFolderType classDescriptionFolderType = null;
153157

154158
switch ( classesFilter ) {

com.ecmdeveloper.plugin.cmis/plugin.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,16 @@
200200
</instanceof>
201201
</enabledWhen>
202202
</page>
203+
<page
204+
class="com.ecmdeveloper.plugin.cmis.properties.RepositoryInfoPropertyPage"
205+
id="com.ecmdeveloper.plugin.cmis.repositoryInfoPage"
206+
name="Repository Info">
207+
<enabledWhen>
208+
<instanceof
209+
value="com.ecmdeveloper.plugin.cmis.model.ObjectStore">
210+
</instanceof>
211+
</enabledWhen>
212+
</page>
203213
</extension>
204214

205215
</plugin>

com.ecmdeveloper.plugin.cmis/src/com/ecmdeveloper/plugin/cmis/model/Connection.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ public void connect() {
6363
repositories = sessionFactory.getRepositories(parameters);
6464
}
6565

66+
@Override
67+
public void disconnect() {
68+
parameters = null;
69+
repositories = null;
70+
}
71+
6672
@Override
6773
public boolean isConnected() {
6874
return repositories != null;

com.ecmdeveloper.plugin.cmis/src/com/ecmdeveloper/plugin/cmis/model/ObjectStore.java

Lines changed: 69 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,19 @@
2121
package com.ecmdeveloper.plugin.cmis.model;
2222

2323
import java.text.MessageFormat;
24+
import java.util.AbstractMap;
2425
import java.util.ArrayList;
2526
import java.util.Collection;
27+
import java.util.List;
2628
import java.util.Map;
29+
import java.util.Map.Entry;
2730

2831
import org.apache.chemistry.opencmis.client.api.CmisObject;
2932
import org.apache.chemistry.opencmis.client.api.Session;
3033
import org.apache.chemistry.opencmis.client.api.SessionFactory;
3134
import org.apache.chemistry.opencmis.commons.SessionParameter;
3235
import org.apache.chemistry.opencmis.commons.data.RepositoryCapabilities;
3336
import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
34-
import org.apache.chemistry.opencmis.commons.enums.CapabilityRenditions;
3537

3638
import com.ecmdeveloper.plugin.cmis.Activator;
3739
import com.ecmdeveloper.plugin.cmis.model.tasks.LoadChildrenTask;
@@ -77,14 +79,16 @@ public void connect() {
7779
session = sessionFactory.createSession(parameters);
7880
displayName = session.getRepositoryInfo().getName();
7981

80-
RepositoryInfo repositoryInfo = session.getRepositoryInfo();
81-
RepositoryCapabilities capabilities = repositoryInfo.getCapabilities();
82-
CapabilityRenditions renditionsCapability = capabilities.getRenditionsCapability();
83-
8482
ObjectStoreItemsModel.getInstance().add(this);
8583
}
8684
}
8785

86+
@Override
87+
public void disconnect() {
88+
session = null;
89+
children = null;
90+
}
91+
8892
public Session getSession() {
8993
return session;
9094
}
@@ -136,6 +140,10 @@ public ObjectStore getObjectStore() {
136140
@Override
137141
public Collection<IObjectStoreItem> getChildren() {
138142

143+
if ( !isConnected() ) {
144+
return null;
145+
}
146+
139147
if ( children == null )
140148
{
141149
children = new ArrayList<IObjectStoreItem>();
@@ -211,6 +219,7 @@ public void setParent(IObjectStoreItem parent) {
211219

212220
}
213221

222+
@SuppressWarnings("unchecked")
214223
@Override
215224
public Object getAdapter(Class adapter) {
216225
// TODO Auto-generated method stub
@@ -261,4 +270,59 @@ public void assertConnected() {
261270
.toString(), getName()));
262271
}
263272
}
273+
274+
public List<Entry<String, Object>> getRepositoryInfo() {
275+
276+
List<Entry<String,Object>> repositoryInfoMap = new ArrayList< Entry<String,Object> >();
277+
278+
repositoryInfoMap.add( getEntry( "General", getGeneralInfo() ) );
279+
repositoryInfoMap.add( getEntry( "Capabilities", getCapabilitiesInfo() ) );
280+
281+
return repositoryInfoMap;
282+
}
283+
284+
private List<Entry<String,Object>> getGeneralInfo() {
285+
286+
List< Entry<String,Object> > generalInfoMap = new ArrayList< Entry<String,Object> >();
287+
288+
RepositoryInfo repInfo = session.getRepositoryInfo();
289+
290+
generalInfoMap.add( getEntry( "Name", repInfo.getName() ) );
291+
generalInfoMap.add( getEntry( "Id", repInfo.getId() ) );
292+
generalInfoMap.add( getEntry( "Description", repInfo.getDescription() ) );
293+
generalInfoMap.add( getEntry( "Vendor", repInfo.getVendorName() ) );
294+
generalInfoMap.add( getEntry( "Product", repInfo.getProductName() + " " + repInfo.getProductVersion() ) );
295+
generalInfoMap.add( getEntry( "CMIS Version", repInfo.getCmisVersionSupported() ) );
296+
297+
return generalInfoMap;
298+
}
299+
300+
private Entry<String, Object> getEntry(String key, Object value) {
301+
Entry<String, Object> entry = new AbstractMap.SimpleEntry<String, Object>(key, value);
302+
return entry;
303+
}
304+
305+
private List<Entry<String,Object>> getCapabilitiesInfo() {
306+
307+
RepositoryCapabilities cap = session.getRepositoryInfo().getCapabilities();
308+
List< Entry<String,Object> > capabilitiesMap = new ArrayList< Entry<String,Object> >();
309+
310+
if ( cap != null ) {
311+
capabilitiesMap.add( getEntry( "Get descendants supported", cap.isGetDescendantsSupported() ) );
312+
capabilitiesMap.add( getEntry( "Get folder tree supported", cap.isGetFolderTreeSupported() ) );
313+
capabilitiesMap.add( getEntry( "Unfiling supported", cap.isUnfilingSupported() ) );
314+
capabilitiesMap.add( getEntry( "Multifiling supported", cap.isMultifilingSupported() ) );
315+
capabilitiesMap.add( getEntry( "Version specific filing supported", cap.isVersionSpecificFilingSupported() ) );
316+
capabilitiesMap.add( getEntry( "Query", cap.getQueryCapability() ) );
317+
capabilitiesMap.add( getEntry( "Joins", cap.getJoinCapability() ) );
318+
capabilitiesMap.add( getEntry( "All versions searchable", cap.isAllVersionsSearchableSupported() ) );
319+
capabilitiesMap.add( getEntry( "PWC searchable", cap.isPwcSearchableSupported() ) );
320+
capabilitiesMap.add( getEntry( "PWC updatable", cap.isPwcUpdatableSupported() ) );
321+
capabilitiesMap.add( getEntry( "Content stream updates", cap.getContentStreamUpdatesCapability() ) );
322+
capabilitiesMap.add( getEntry( "Renditions", cap.getRenditionsCapability() ) );
323+
capabilitiesMap.add( getEntry( "Changes", cap.getChangesCapability() ) );
324+
capabilitiesMap.add( getEntry( "ACLs", cap.getAclCapability() ) );
325+
}
326+
return capabilitiesMap;
327+
}
264328
}

com.ecmdeveloper.plugin.cmis/src/com/ecmdeveloper/plugin/cmis/properties/ConnectionPropertyPage.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
import org.eclipse.swt.widgets.Composite;
2828

2929
import com.ecmdeveloper.plugin.cmis.model.Connection;
30+
import com.ecmdeveloper.plugin.cmis.model.ObjectStore;
3031
import com.ecmdeveloper.plugin.core.model.IConnection;
3132
import com.ecmdeveloper.plugin.core.properties.AbstractConnectionPropertyPage;
32-
import com.ecmdeveloper.plugin.cmis.model.ObjectStore;
3333

3434
/**
3535
* @author ricardo.belfor
@@ -94,18 +94,17 @@ protected IConnection getConnection() {
9494

9595
@Override
9696
public IConnection getTestConnection() {
97-
98-
String url = getUrl();
99-
String username = getUserName();
100-
String password = getPassword();
97+
return new Connection();
98+
}
10199

102-
final Connection connection = new Connection();
100+
protected void initializeConnection(IConnection connection) {
103101

104-
connection.setUrl(url);
105-
connection.setUsername(username);
106-
connection.setPassword(password);
107-
connection.setName(url);
108-
connection.setDisplayName(connectionName);
109-
return connection;
102+
Connection connection2 = (Connection) connection;
103+
104+
connection2.setDisplayName(connectionName);
105+
connection2.setName( getUrl() );
106+
connection2.setUrl( getUrl() );
107+
connection2.setUsername( getUserName() );
108+
connection2.setPassword( getPassword() );
110109
}
111110
}

com.ecmdeveloper.plugin.cmis/src/com/ecmdeveloper/plugin/cmis/properties/RepositoryInfoPropertyPage.java

Lines changed: 154 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,23 @@
2020

2121
package com.ecmdeveloper.plugin.cmis.properties;
2222

23+
import java.util.List;
24+
import java.util.Map.Entry;
25+
26+
import org.eclipse.jface.viewers.IStructuredContentProvider;
27+
import org.eclipse.jface.viewers.ITableLabelProvider;
28+
import org.eclipse.jface.viewers.ITreeContentProvider;
29+
import org.eclipse.jface.viewers.LabelProvider;
30+
import org.eclipse.jface.viewers.TreeViewer;
31+
import org.eclipse.jface.viewers.Viewer;
32+
import org.eclipse.swt.SWT;
33+
import org.eclipse.swt.graphics.Image;
34+
import org.eclipse.swt.layout.GridData;
35+
import org.eclipse.swt.layout.GridLayout;
2336
import org.eclipse.swt.widgets.Composite;
2437
import org.eclipse.swt.widgets.Control;
38+
import org.eclipse.swt.widgets.Label;
39+
import org.eclipse.swt.widgets.TreeColumn;
2540
import org.eclipse.ui.IWorkbenchPropertyPage;
2641
import org.eclipse.ui.dialogs.PropertyPage;
2742

@@ -33,12 +48,149 @@
3348
*/
3449
public class RepositoryInfoPropertyPage extends PropertyPage implements IWorkbenchPropertyPage {
3550

51+
private TreeViewer infoTreeViewer;
52+
3653
@Override
3754
protected Control createContents(Composite parent) {
3855

3956
ObjectStore objectStore = (ObjectStore) getElement();
57+
58+
Composite container = createContainer(parent);
59+
if ( objectStore.isConnected() ) {
60+
createFileTree(container);
61+
62+
List<Entry<String,Object>> repositoryInfo = objectStore.getRepositoryInfo();
63+
infoTreeViewer.setInput( repositoryInfo );
64+
infoTreeViewer.expandToLevel(2);
65+
} else {
66+
Label label = new Label(container, SWT.None);
67+
label.setText("Repository information is available only when the Object Store is connected.");
68+
}
69+
return container;
70+
}
71+
72+
private Composite createContainer(Composite parent) {
73+
Composite panel = new Composite(parent, SWT.NONE);
74+
GridLayout layout = new GridLayout();
75+
layout.numColumns = 1;
76+
panel.setLayout(layout);
77+
return panel;
78+
}
79+
80+
private void createFileTree(Composite client) {
81+
82+
infoTreeViewer = new TreeViewer(client, SWT.MULTI | SWT.H_SCROLL
83+
| SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
84+
85+
GridData gd = new GridData(GridData.FILL_BOTH);
86+
87+
infoTreeViewer.getTree().setLayoutData(gd);
88+
infoTreeViewer.setContentProvider(new InfoContentProvider() );
89+
infoTreeViewer.setLabelProvider(new InfoLabelProvider());
90+
infoTreeViewer.getTree().setHeaderVisible(true);
91+
92+
TreeColumn treeColumn1 = new TreeColumn(infoTreeViewer.getTree(), SWT.LEFT );
93+
treeColumn1.setWidth(200);
94+
treeColumn1.setText("Name");
95+
treeColumn1.setResizable(true);
96+
97+
TreeColumn treeColumn2 = new TreeColumn(infoTreeViewer.getTree(), SWT.LEFT );
98+
treeColumn2.setWidth(300);
99+
treeColumn2.setText("Value");
100+
treeColumn2.setResizable(true);
101+
}
102+
103+
class InfoContentProvider implements IStructuredContentProvider, ITreeContentProvider {
104+
105+
List<Entry<String,Object>> infoList;
40106

41-
// TODO Auto-generated method stub
42-
return null;
107+
@SuppressWarnings("unchecked")
108+
@Override
109+
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
110+
if ( newInput != null ) {
111+
infoList = (List<Entry<String, Object>>) newInput;
112+
} else {
113+
infoList = null;
114+
}
115+
}
116+
117+
@Override
118+
public Object[] getElements(Object inputElement) {
119+
return getChildren(inputElement);
120+
}
121+
122+
@Override
123+
public void dispose() {
124+
}
125+
126+
@SuppressWarnings("unchecked")
127+
@Override
128+
public Object[] getChildren(Object parentElement) {
129+
130+
if ( parentElement instanceof List) {
131+
return ((List) parentElement).toArray();
132+
} else if ( parentElement instanceof Entry ) {
133+
Object value = ((Entry) parentElement).getValue();
134+
if ( value != null && value instanceof List ) {
135+
return ((List) value).toArray();
136+
}
137+
}
138+
return null;
139+
}
140+
141+
@Override
142+
public Object getParent(Object element) {
143+
return null;
144+
}
145+
146+
@SuppressWarnings("unchecked")
147+
@Override
148+
public boolean hasChildren(Object element) {
149+
if ( element instanceof List) {
150+
return !((List) element).isEmpty();
151+
} else if ( element instanceof Entry ) {
152+
Object value = ((Entry) element).getValue();
153+
if ( value != null && value instanceof List ) {
154+
return !((List) value).isEmpty();
155+
}
156+
}
157+
return false;
158+
}
159+
}
160+
161+
class InfoLabelProvider extends LabelProvider implements ITableLabelProvider {
162+
163+
private static final int NAME_COLUMN_INDEX = 0;
164+
private static final int VALUE_COLUMN_INDEX = 1;
165+
private static final String EMPTY_STRING = "";
166+
167+
@Override
168+
public Image getColumnImage(Object element, int columnIndex) {
169+
return null;
170+
}
171+
172+
@Override
173+
public String getColumnText(Object element, int columnIndex) {
174+
if ( element instanceof Entry ) {
175+
if ( columnIndex == NAME_COLUMN_INDEX ) {
176+
return ((Entry) element).getKey().toString();
177+
} else if ( columnIndex == VALUE_COLUMN_INDEX ) {
178+
return getValue(element);
179+
}
180+
}
181+
182+
return EMPTY_STRING;
183+
}
184+
185+
private String getValue(Object element) {
186+
Object value = ((Entry) element).getValue();
187+
if ( value != null ) {
188+
if (value instanceof List) {
189+
return EMPTY_STRING;
190+
}
191+
return value.toString();
192+
}
193+
return EMPTY_STRING;
194+
}
43195
}
44196
}

com.ecmdeveloper.plugin.core/src/com/ecmdeveloper/plugin/core/model/IConnection.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@ public interface IConnection {
3535
IObjectStore[] getObjectStores(IObjectStores parent);
3636
String getDisplayName();
3737
boolean isConnected();
38+
void disconnect();
3839

3940
}

com.ecmdeveloper.plugin.core/src/com/ecmdeveloper/plugin/core/model/IObjectStore.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public interface IObjectStore extends IObjectStoreItem {
3737

3838
void connect();
3939

40+
void disconnect();
41+
4042
Collection<IClassDescriptionFolder> getClassDescriptionFolders();
4143

4244
IClassDescriptionFolder getClassDescriptionFolder( ClassDescriptionFolderType classDescriptionFolderType);

0 commit comments

Comments
 (0)