Skip to content

Commit 7ded454

Browse files
unknownunknown
authored andcommitted
realease
0 parents  commit 7ded454

File tree

34 files changed

+1668
-0
lines changed

34 files changed

+1668
-0
lines changed

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
*.class
2+
*.idea
3+
*.iml
4+
5+
# Package Files #
6+
*.jar
7+
*.war
8+
*.ear
9+
**/target

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
cmis-browser-a
2+
==============

core/META-INF/ejb-jar.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5+
http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
6+
version="3.1">
7+
</ejb-jar>

core/pom.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>CMISBrowser</artifactId>
7+
<groupId>com.engagepoint.labs</groupId>
8+
<version>1.0</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<groupId>com.engagepoint.labs</groupId>
13+
<artifactId>core</artifactId>
14+
<dependencies>
15+
<dependency>
16+
<groupId>javax.ejb</groupId>
17+
<artifactId>ejb-api</artifactId>
18+
<version>3.0</version>
19+
</dependency>
20+
</dependencies>
21+
</project>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.engagepoint.labs.core.dao;
2+
3+
4+
import org.apache.chemistry.opencmis.client.api.Repository;
5+
import org.apache.chemistry.opencmis.client.api.Session;
6+
import org.apache.chemistry.opencmis.client.api.SessionFactory;
7+
import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
8+
import org.apache.chemistry.opencmis.commons.SessionParameter;
9+
import org.apache.chemistry.opencmis.commons.enums.BindingType;
10+
11+
import java.util.ArrayList;
12+
import java.util.HashMap;
13+
import java.util.List;
14+
import java.util.Map;
15+
16+
/**
17+
* User: r.reznichenko
18+
* Date: 6/17/13
19+
* Time: 1:39 PM
20+
*/
21+
public class ConnectionFactory {
22+
23+
private static Session session;
24+
25+
/**
26+
* Return session
27+
* @return session
28+
*/
29+
public static Session getSession(){
30+
SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
31+
Map<String, String> parameter = new HashMap<String, String>();
32+
33+
parameter.put(SessionParameter.ATOMPUB_URL, "http://repo.opencmis.org/inmemory/atom/");
34+
parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
35+
36+
List<Repository> repositories = new ArrayList<Repository>();
37+
repositories = sessionFactory.getRepositories(parameter);
38+
Repository repository = repositories.get(0);
39+
parameter.put(SessionParameter.REPOSITORY_ID, repository.getId());
40+
session = sessionFactory.createSession(parameter);
41+
return session;
42+
}
43+
44+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.engagepoint.labs.core.dao;
2+
3+
import com.engagepoint.labs.core.models.FSFile;
4+
import com.engagepoint.labs.core.models.FSFolder;
5+
import org.apache.chemistry.opencmis.client.api.Session;
6+
7+
/**
8+
* User: r.reznichenko
9+
* Date: 6/17/13
10+
* Time: 2:52 PM
11+
*/
12+
public interface FSFileDao {
13+
14+
/**
15+
* Connect to repository
16+
* @param session - session
17+
*/
18+
public void setSession(Session session);
19+
20+
/**
21+
* Create new file in parent folder
22+
* @param parent - folder in which you want create new file
23+
* @param fileName - name of file which you want create
24+
* @param content - content of file
25+
* @return created file, FSFile type
26+
*/
27+
public FSFile create(FSFolder parent, String fileName, String content);
28+
29+
/**
30+
* Method that will rename file
31+
* @param file - file which you want rename
32+
* @param newName - new name of file
33+
* @return renamed file
34+
*/
35+
public FSFile rename(FSFile file, String newName);
36+
37+
/**
38+
* Getting content of file
39+
* @param file - file, content of which you want to get
40+
* @return content
41+
*/
42+
public String getContent(FSFile file);
43+
44+
/**
45+
* Method that will delete file from repository
46+
* @param file - file which you want to delete
47+
* @return <b>true</b> if deleted
48+
*/
49+
public boolean delete(FSFile file);
50+
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package com.engagepoint.labs.core.dao;
2+
3+
import com.engagepoint.labs.core.models.FSFile;
4+
import com.engagepoint.labs.core.models.FSFolder;
5+
import org.apache.chemistry.opencmis.client.api.Document;
6+
import org.apache.chemistry.opencmis.client.api.Folder;
7+
import org.apache.chemistry.opencmis.client.api.Session;
8+
import org.apache.chemistry.opencmis.commons.PropertyIds;
9+
import org.apache.chemistry.opencmis.commons.data.ContentStream;
10+
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
11+
12+
import java.io.*;
13+
import java.util.HashMap;
14+
import java.util.Map;
15+
16+
/**
17+
* User: r.reznichenko
18+
* Date: 6/17/13
19+
* Time: 4:02 PM
20+
*/
21+
public class FSFileDaoImpl implements FSFileDao {
22+
23+
private Session session;
24+
@Override
25+
public void setSession(Session session) {
26+
this.session = session;
27+
28+
}
29+
30+
@Override
31+
public FSFile create(FSFolder parent, String fileName, String content) {
32+
Folder cmisParent = (Folder) session.getObjectByPath(parent.getPath());
33+
34+
String mimetype = "text/plain; charset=UTF-8";
35+
36+
byte[] buf = new byte[0];
37+
try {
38+
buf = content.getBytes("UTF-8");
39+
} catch (UnsupportedEncodingException e) {
40+
//TODO do something with exception
41+
}
42+
ByteArrayInputStream input = new ByteArrayInputStream(buf);
43+
44+
ContentStream contentStream = session.getObjectFactory()
45+
.createContentStream(fileName, buf.length, mimetype, input);
46+
Map<String, Object> properties = new HashMap<String, Object>();
47+
properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
48+
properties.put(PropertyIds.NAME, fileName);
49+
50+
Document doc = cmisParent.createDocument(properties, contentStream, VersioningState.NONE);
51+
52+
String notRootFolder = parent.getPath().equals("/") ? "" : parent.getPath();
53+
FSFile file = new FSFile();
54+
file.setId(doc.getId());
55+
file.setName(fileName);
56+
file.setPath(notRootFolder);
57+
file.setAbsolutePath(notRootFolder + "/" + fileName);
58+
file.setContent(content);
59+
file.setParent(parent);
60+
file.setType(doc.getType().getDisplayName());
61+
return file;
62+
}
63+
64+
@Override
65+
public FSFile rename(FSFile file, String newName) {
66+
Document cmisFile = (Document) session.getObjectByPath(file.getAbsolutePath());
67+
Map<String, String> properties = new HashMap<String, String>();
68+
properties.put(PropertyIds.NAME, newName);
69+
cmisFile.updateProperties(properties, true);
70+
file.setName(cmisFile.getName());
71+
file.setAbsolutePath(cmisFile.getPaths().get(0));
72+
return file;
73+
}
74+
75+
@Override
76+
public String getContent(FSFile file) {
77+
Document cmisFile = (Document) session.getObjectByPath(file.getAbsolutePath());
78+
ContentStream contentStream = cmisFile.getContentStream();
79+
String content = null;
80+
if (contentStream != null) {
81+
try {
82+
content = getContentAsString(contentStream);
83+
} catch (IOException e) {
84+
//TODO do something with exception
85+
}
86+
}
87+
file.setContent(content);
88+
return content;
89+
}
90+
91+
@Override
92+
public boolean delete(FSFile file) {
93+
Document doc = (Document) session.getObjectByPath(file.getAbsolutePath());
94+
doc.delete(true);
95+
return true;
96+
}
97+
98+
private String getContentAsString(ContentStream stream) throws IOException {
99+
StringBuilder sb = new StringBuilder();
100+
Reader reader = new InputStreamReader(stream.getStream(), "UTF-8");
101+
102+
try {
103+
final char[] buffer = new char[4 * 1024];
104+
int b;
105+
while (true) {
106+
b = reader.read(buffer, 0, buffer.length);
107+
if (b > 0) {
108+
sb.append(buffer, 0, b);
109+
} else if (b == -1) {
110+
break;
111+
}
112+
}
113+
} finally {
114+
reader.close();
115+
}
116+
117+
return sb.toString();
118+
}
119+
120+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.engagepoint.labs.core.dao;
2+
3+
/**
4+
* User: r.reznichenko
5+
* Date: 6/17/13
6+
* Time: 2:53 PM
7+
*/
8+
9+
import com.engagepoint.labs.core.models.FSFolder;
10+
import com.engagepoint.labs.core.models.FSObject;
11+
import org.apache.chemistry.opencmis.client.api.Session;
12+
13+
import java.util.List;
14+
15+
public interface FSFolderDao {
16+
17+
/**
18+
* Connect to repository
19+
* @param session - session
20+
*/
21+
public void setSession(Session session);
22+
23+
/**
24+
* Create new folder in parent folder
25+
* @param parent - folder in which you want create new folder
26+
* @param folderName - name of folder which you want create
27+
* @return created folder, FSFolder type
28+
*/
29+
public FSFolder create(FSFolder parent, String folderName);
30+
31+
/**
32+
* Method that will rename folder
33+
* @param folder - folder which you want rename
34+
* @param newName - new name of folder
35+
* @return renamed folder
36+
*/
37+
public FSFolder rename(FSFolder folder, String newName);
38+
39+
/**
40+
* Get all children from parent folder
41+
* @param parent - folder in which you want get children
42+
* @return - list of FSObject files
43+
*/
44+
public List<FSObject> getChildren(FSFolder parent);
45+
46+
/**
47+
* Method that will delete folder from repository
48+
* @param folder - folder which you want to delete
49+
* @return <b>true</b> if deleted
50+
*/
51+
public boolean delete(FSFolder folder);
52+
53+
/**
54+
*
55+
* @return root folder
56+
*/
57+
public FSFolder getRoot();
58+
59+
public FSFileDao getFsFileDao();
60+
61+
}

0 commit comments

Comments
 (0)