KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > repository > test > TestContentCreator


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */

16 package org.outerj.daisy.repository.test;
17
18 import org.outerj.daisy.repository.*;
19 import org.outerj.daisy.repository.acl.*;
20 import org.outerj.daisy.repository.schema.RepositorySchema;
21 import org.outerj.daisy.repository.schema.FieldType;
22 import org.outerj.daisy.repository.schema.PartType;
23 import org.outerj.daisy.repository.schema.DocumentType;
24 import org.outerj.daisy.repository.user.UserManager;
25 import org.outerj.daisy.repository.user.Role;
26 import org.outerj.daisy.repository.user.User;
27
28 import java.util.GregorianCalendar JavaDoc;
29 import java.math.BigDecimal JavaDoc;
30
31 public class TestContentCreator {
32     public void run(RepositoryManager repositoryManager) throws Exception JavaDoc {
33         Repository testuserRepository = repositoryManager.getRepository(new Credentials("testuser", "testuser"));
34         testuserRepository.switchRole(Role.ADMINISTRATOR);
35
36         // Create a role and two users
37
UserManager userManger = testuserRepository.getUserManager();
38         Role role = userManger.getRole("user", false);
39
40         User user1 = userManger.createUser("user1");
41         user1.addToRole(role);
42         user1.setDefaultRole(role);
43         user1.setFirstName("User1First");
44         user1.setLastName("User1Last");
45         user1.setPassword("user1");
46         user1.save();
47
48         User user2 = userManger.createUser("user2");
49         user2.addToRole(role);
50         user2.setDefaultRole(role);
51         user2.setFirstName("User2");
52         user2.setLastName("User2Last");
53         user2.setPassword("user2");
54         user2.save();
55
56         // Create two document types
57
RepositorySchema schema = testuserRepository.getRepositorySchema();
58
59         FieldType fieldType1 = schema.createFieldType("field1", ValueType.STRING);
60         fieldType1.save();
61         FieldType fieldType2 = schema.createFieldType("field2", ValueType.LONG);
62         fieldType2.setAclAllowed(true);
63         fieldType2.save();
64
65         PartType partType1 = schema.createPartType("part1", "text/xml");
66         partType1.setDaisyHtml(true);
67         partType1.save();
68
69         DocumentType documentType1 = schema.createDocumentType("doctype1");
70         documentType1.addFieldType(fieldType1, false);
71         documentType1.addFieldType(fieldType2, false);
72         documentType1.addPartType(partType1, false);
73         documentType1.save();
74
75         DocumentType documentType2 = schema.createDocumentType("doctype2");
76         documentType2.addFieldType(fieldType1, false);
77         documentType2.addFieldType(fieldType2, false);
78         documentType2.addPartType(partType1, false);
79         documentType2.save();
80
81         // Create two collections
82
CollectionManager collectionManager = testuserRepository.getCollectionManager();
83         DocumentCollection collection1 = collectionManager.createCollection("collection1");
84         collection1.save();
85         DocumentCollection collection2 = collectionManager.createCollection("collection2");
86         collection2.save();
87
88         // Create the ACL
89

90         // everyone can do everything, except:
91
// documentType = 'doctype2' -> user1 denied
92
// collection = 'collection2' -> user2 denied except if fieldType2 = 34
93

94         AccessManager accessManager = testuserRepository.getAccessManager();
95         Acl acl = accessManager.getStagingAcl();
96
97         AclObject aclObject;
98         AclEntry aclEntry;
99
100         aclObject = acl.createNewObject("true");
101         aclEntry = aclObject.createNewEntry(AclSubjectType.EVERYONE, -1);
102         aclEntry.set(AclPermission.READ_LIVE, AclActionType.GRANT);
103         aclEntry.set(AclPermission.READ, AclActionType.GRANT);
104         aclEntry.set(AclPermission.WRITE, AclActionType.GRANT);
105         aclEntry.set(AclPermission.PUBLISH, AclActionType.GRANT);
106         aclEntry.set(AclPermission.DELETE, AclActionType.GRANT);
107         aclObject.add(aclEntry);
108         acl.add(aclObject);
109
110         aclObject = acl.createNewObject("documentType = 'doctype2'");
111         aclEntry = aclObject.createNewEntry(AclSubjectType.USER, user1.getId());
112         aclEntry.set(AclPermission.READ_LIVE, AclActionType.DENY);
113         aclEntry.set(AclPermission.READ, AclActionType.DENY);
114         aclEntry.set(AclPermission.WRITE, AclActionType.DENY);
115         aclEntry.set(AclPermission.PUBLISH, AclActionType.DENY);
116         aclEntry.set(AclPermission.DELETE, AclActionType.DENY);
117         aclObject.add(aclEntry);
118         acl.add(aclObject);
119
120         aclObject = acl.createNewObject("InCollection('collection2') and ($field2 != 34 or $field2 is null)");
121         aclEntry = aclObject.createNewEntry(AclSubjectType.USER, user2.getId());
122         aclEntry.set(AclPermission.READ_LIVE, AclActionType.DENY);
123         aclEntry.set(AclPermission.READ, AclActionType.DENY);
124         aclEntry.set(AclPermission.WRITE, AclActionType.DENY);
125         aclEntry.set(AclPermission.PUBLISH, AclActionType.DENY);
126         aclEntry.set(AclPermission.DELETE, AclActionType.DENY);
127         aclObject.add(aclEntry);
128         acl.add(aclObject);
129
130         acl.save();
131         accessManager.copyStagingToLive();
132
133         // Create some documents as user1
134
Repository user1Repository = repositoryManager.getRepository(new Credentials("user1", "user1"));
135
136         Document document1 = user1Repository.createDocument("Document1", documentType1.getId());
137         String JavaDoc searchableContent = "<html><body>Effect van de langtermijnrente op het coca cola gebruik bij verzamelaars van postzegels.</body></html>";
138         document1.setPart(partType1.getId(), "text/xml", searchableContent.getBytes("UTF-8"));
139         document1.addToCollection(collection1);
140         document1.save();
141
142         Document document2 = user1Repository.createDocument("Document2", documentType1.getId());
143         String JavaDoc contentWithLink = "<html><body><a HREF='daisy:" + document1.getId() + "'/></body></html>";
144         document2.setPart(partType1.getId(), "text/xml", contentWithLink.getBytes("UTF-8"));
145         document2.addToCollection(collection1);
146         document2.save();
147
148         Document document3 = user1Repository.createDocument("Document3", documentType1.getId());
149         document3.setPrivate(true);
150         document3.addToCollection(collection1);
151         document3.save();
152
153         Document document4 = user1Repository.createDocument("Document4", documentType1.getId());
154         document4.setField("field1", "something-X");
155         document4.addToCollection(collection2);
156         document4.save();
157
158         // Create some documents as user2
159
Repository user2Repository = repositoryManager.getRepository(new Credentials("user2", "user2"));
160
161         Document document5 = user2Repository.createDocument("Document5", documentType1.getId());
162         document5.setField("field1", "something-X");
163         document5.addToCollection(collection1);
164         document5.save();
165
166         Document document6 = user2Repository.createDocument("Document6", documentType2.getId());
167         document6.setField("field2", new Long JavaDoc(34));
168         document6.addToCollection(collection2);
169         document6.save();
170
171         // Make a documetn that belongs to two collections
172
DocumentCollection collection3 = collectionManager.createCollection("collection3");
173         collection3.save();
174         DocumentCollection collection4 = collectionManager.createCollection("collection4");
175         collection4.save();
176
177         Document document7 = user2Repository.createDocument("Document7", documentType1.getId());
178         document7.addToCollection(collection3);
179         document7.addToCollection(collection4);
180         document7.save();
181
182         //
183
// Make some documents / document type that uses the various data types
184
//
185

186         FieldType stringField1 = schema.createFieldType("StringField1", ValueType.STRING);
187         stringField1.save();
188         FieldType dateField1 = schema.createFieldType("DateField1", ValueType.DATE);
189         dateField1.save();
190         FieldType dateTimeField1 = schema.createFieldType("DateTimeField1", ValueType.DATETIME);
191         dateTimeField1.save();
192         FieldType decimalField1 = schema.createFieldType("DecimalField1", ValueType.DECIMAL);
193         decimalField1.save();
194         FieldType doubleField1 = schema.createFieldType("DoubleField1", ValueType.DOUBLE);
195         doubleField1.save();
196         FieldType longField1 = schema.createFieldType("LongField1", ValueType.LONG);
197         longField1.save();
198         FieldType linkField1 = schema.createFieldType("LinkField1", ValueType.LINK);
199         linkField1.save();
200         FieldType linkField2 = schema.createFieldType("LinkField2", ValueType.LINK, true);
201         linkField2.save();
202
203         DocumentType documentType3 = schema.createDocumentType("doctype3");
204         documentType3.addFieldType(stringField1, false);
205         documentType3.addFieldType(dateField1, false);
206         documentType3.addFieldType(dateTimeField1, false);
207         documentType3.addFieldType(decimalField1, false);
208         documentType3.addFieldType(doubleField1, false);
209         documentType3.addFieldType(longField1, false);
210         documentType3.addFieldType(linkField1, false);
211         documentType3.addFieldType(linkField2, false);
212         documentType3.save();
213
214         User user3 = userManger.createUser("user3");
215         user3.setPassword("user3");
216         user3.setFirstName("User3First");
217         user3.setLastName("User3Last");
218         user3.addToRole(role);
219         user3.setDefaultRole(role);
220         user3.save();
221
222         DocumentCollection collection5 = collectionManager.createCollection("collection5");
223         collection5.save();
224
225         Repository user3Repository = repositoryManager.getRepository(new Credentials("user3", "user3"));
226
227         Document document8 = user3Repository.createDocument("Document8", documentType3.getId());
228         document8.setField(stringField1.getId(), "hello");
229         GregorianCalendar JavaDoc calendar = new GregorianCalendar JavaDoc(2004, 11, 6, 0, 0, 0); // month is zero-based
230
document8.setField(dateField1.getId(), calendar.getTime());
231         calendar = new GregorianCalendar JavaDoc(2004, 9, 14, 12, 13, 14);
232         document8.setField(dateTimeField1.getId(), calendar.getTime());
233         document8.setField(decimalField1.getId(), new BigDecimal JavaDoc(678.94321));
234         document8.setField(doubleField1.getId(), new Double JavaDoc(123.456d));
235         document8.setField(longField1.getId(), new Long JavaDoc(1978L));
236         document8.setField(linkField1.getId(), new VariantKey(2, 1, 1));
237         document8.setField(linkField2.getId(), new VariantKey[] {new VariantKey(2, 1, 1), new VariantKey(666, -1, -1)});
238         document8.addToCollection(collection5);
239         document8.save();
240
241         Document document9 = user3Repository.createDocument("Document9", documentType3.getId());
242         calendar = new GregorianCalendar JavaDoc(2004, 11, 10, 0, 0, 0); // month is zero-based
243
document9.setField(dateField1.getId(), calendar.getTime());
244         document9.addToCollection(collection5);
245         document9.save();
246
247         Document document10 = user3Repository.createDocument("Document10", documentType3.getId());
248         document10.setField(longField1.getId(), new Long JavaDoc(1985L));
249         document10.addToCollection(collection5);
250         document10.save();
251
252         Document document11 = user3Repository.createDocument("Document11", documentType3.getId());
253         document11.setField(stringField1.getId(), "another hello");
254         document11.setField(longField1.getId(), new Long JavaDoc(1990L));
255         document11.addToCollection(collection5);
256         document11.setCustomField("xyz", "123");
257         document11.save();
258
259         Document document12 = user3Repository.createDocument("Document12", documentType3.getId());
260         document12.save();
261         document12.setNewVersionState(VersionState.DRAFT);
262         document12.setField(stringField1.getId(), "boe");
263         document12.save();
264
265         Document document13 = user3Repository.createDocument("Document13", documentType3.getId());
266         document13.setField(stringField1.getId(), "ba");
267         document13.setRetired(true);
268         document13.save();
269
270     }
271
272 }
273
Popular Tags