Wikitty-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- 1653 discussions
r1076 - in trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication: externalize synchro
by mfortun@users.nuiton.org 12 Jul '11
by mfortun@users.nuiton.org 12 Jul '11
12 Jul '11
Author: mfortun
Date: 2011-07-12 10:46:28 +0200 (Tue, 12 Jul 2011)
New Revision: 1076
Url: http://nuiton.org/repositories/revision/wikitty/1076
Log:
* code optimization move findbyid and findallid to abstract wikitty service on file system
* finds implemented for wikitty service jar loader
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 15:48:08 UTC (rev 1075)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-12 08:46:28 UTC (rev 1076)
@@ -9,8 +9,10 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Collection;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -158,9 +160,14 @@
public boolean canRead(String securityToken, String wikittyId) {
return exists(securityToken, wikittyId);
}
+
@Override
public boolean exists(String securityToken, String wikittyId) {
+ return exists(wikittyId);
+ }
+
+ protected boolean exists(String wikittyId) {
return wikittyIndex.containsKey(wikittyId);
}
@@ -245,87 +252,12 @@
List<Wikitty> result = new LinkedList<Wikitty>();
- try {
- for (String wikittyId : ids) {
- // if wikitty doesn't exist jump to the next id
- if (!exists(securityToken, wikittyId)) {
+ for (String wikittyId : ids) {
+ // if wikitty doesn't exist jump to the next id
- continue;
- }
+ result.add(restore(wikittyId));
+ }
- String fileExtension = wikittyMetadata.getProperty(wikittyId
- + WikittyPublicationExternalize.EXTENSION_SUFFIX);
- String path = wikittyIndex.getProperty(wikittyId);
- String version = wikittyMetadata.getProperty(wikittyId
- + WikittyPublicationExternalize.VERSION_SUFFIX);
-
- JarEntry wikittyJared = wikittyJarRepository.getJarEntry(path
- + "." + fileExtension);
-
- MimeTypePubHelper mimeHelper = new MimeTypePubHelper();
-
- Wikitty wikit = new WikittyImpl(wikittyId);
- wikit.setVersion(version);
-
- wikit.addExtension(WikittyLabelImpl.extensionWikittyLabel);
-
- // set labels computate name
- String sep = wikittyMetadata
- .getProperty(WikittyPublicationExternalize.PATH_SEPARATOR);
- String[] namPath = StringUtil.split(path, sep);
- String wikittyName = namPath[namPath.length - 1];
-
- String label = "";
- for (int i = 0; i < namPath.length - 1; i++) {
- label += namPath[i];
- if (i < namPath.length - 2) {
- label += WikittyPublicationFileSystem.WIKITTYLABEL_SEPARATOR;
- }
- }
-
- WikittyLabelHelper.addLabels(wikit, label);
-
- if (mimeHelper.isPubTextMime(fileExtension)) {
- // wikitty pub text compiled
- wikit.addExtension(WikittyPubTextImpl.extensions);
- wikit.addExtension(WikittyPubTextCompiledImpl.extensionWikittyPubTextCompiled);
-
- // basic field
- WikittyPubTextHelper.setFileExtension(wikit, fileExtension);
- WikittyPubTextHelper.setMimeType(wikit,
- mimeHelper.getMimeForExtension(fileExtension));
- WikittyPubTextHelper.setName(wikit, wikittyName);
-
- // contents fields:
- JarEntry wikittyclass = wikittyJarRepository
- .getJarEntry(path
- + WikittyPublicationExternalize.COMPILED_EXTENSION);
-
- WikittyPubTextHelper.setContent(wikit,
- getStringContent(wikittyJared));
- WikittyPubTextCompiledHelper.setByteCode(wikit,
- this.getByteContent(wikittyclass));
-
- } else {
- // wikitty pub data
- wikit.addExtension(WikittyPubDataImpl.extensionWikittyPubData);
- WikittyPubDataHelper.setMimeType(wikit,
- mimeHelper.getMimeForExtension(fileExtension));
-
- WikittyPubDataHelper.setName(wikit, wikittyName);
-
- WikittyPubDataHelper.setFileExtension(wikit, fileExtension);
- WikittyPubDataHelper.setContent(wikit,
- this.getByteContent(wikittyJared));
- }
-
- result.add(wikit);
- }
-
- } catch (Exception e) {
- // TODO mfortun-2011-07-11 really handle exception
- e.printStackTrace();
- }
return result;
}
@@ -337,23 +269,22 @@
}
- @Override
- public List<PagedResult<String>> findAllByCriteria(String securityToken,
- List<Criteria> criteria) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return null;
- }
-
+
+
+
+
@Override
- public List<String> findByCriteria(String securityToken,
- List<Criteria> criteria) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return null;
-
+ protected Map<String, Wikitty> getAllWikitties() {
+ Map<String, Wikitty> result = new HashMap<String, Wikitty>();
+
+ for (Object oId: wikittyIndex.keySet()){
+ String id= oId.toString();
+ result.put(id, restore(id));
+ }
+ return result;
}
+
@Override
public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
@@ -389,6 +320,91 @@
}
+
+
+
+ protected Wikitty restore(String wikittyId) {
+
+ Wikitty wikit = null;
+ try {
+ if (!exists(wikittyId)) {
+ return null;
+ }
+
+ String fileExtension = wikittyMetadata.getProperty(wikittyId
+ + WikittyPublicationExternalize.EXTENSION_SUFFIX);
+ String path = wikittyIndex.getProperty(wikittyId);
+ String version = wikittyMetadata.getProperty(wikittyId
+ + WikittyPublicationExternalize.VERSION_SUFFIX);
+
+ JarEntry wikittyJared = wikittyJarRepository.getJarEntry(path + "."
+ + fileExtension);
+
+ MimeTypePubHelper mimeHelper = new MimeTypePubHelper();
+
+ wikit = new WikittyImpl(wikittyId);
+ wikit.setVersion(version);
+
+ wikit.addExtension(WikittyLabelImpl.extensionWikittyLabel);
+
+ // set labels computate name
+ String sep = wikittyMetadata
+ .getProperty(WikittyPublicationExternalize.PATH_SEPARATOR);
+ String[] namPath = StringUtil.split(path, sep);
+ String wikittyName = namPath[namPath.length - 1];
+
+ String label = "";
+ for (int i = 0; i < namPath.length - 1; i++) {
+ label += namPath[i];
+ if (i < namPath.length - 2) {
+ label += WikittyPublicationFileSystem.WIKITTYLABEL_SEPARATOR;
+ }
+ }
+
+ WikittyLabelHelper.addLabels(wikit, label);
+
+ if (mimeHelper.isPubTextMime(fileExtension)) {
+ // wikitty pub text compiled
+ wikit.addExtension(WikittyPubTextImpl.extensions);
+ wikit.addExtension(WikittyPubTextCompiledImpl.extensionWikittyPubTextCompiled);
+
+ // basic field
+ WikittyPubTextHelper.setFileExtension(wikit, fileExtension);
+ WikittyPubTextHelper.setMimeType(wikit,
+ mimeHelper.getMimeForExtension(fileExtension));
+ WikittyPubTextHelper.setName(wikit, wikittyName);
+
+ // contents fields:
+ JarEntry wikittyclass = wikittyJarRepository.getJarEntry(path
+ + WikittyPublicationExternalize.COMPILED_EXTENSION);
+
+ WikittyPubTextHelper.setContent(wikit,
+ this.getStringContent(wikittyJared));
+ WikittyPubTextCompiledHelper.setByteCode(wikit,
+ this.getByteContent(wikittyclass));
+
+ } else {
+ // wikitty pub data
+ wikit.addExtension(WikittyPubDataImpl.extensionWikittyPubData);
+ WikittyPubDataHelper.setMimeType(wikit,
+ mimeHelper.getMimeForExtension(fileExtension));
+
+ WikittyPubDataHelper.setName(wikit, wikittyName);
+
+ WikittyPubDataHelper.setFileExtension(wikit, fileExtension);
+ WikittyPubDataHelper.setContent(wikit,
+ this.getByteContent(wikittyJared));
+ }
+
+ } catch (Exception e) {
+ // TODO mfortun-2011-07-11 really handle exception
+ e.printStackTrace();
+ }
+
+ return wikit;
+ }
+
+
public String getStringContent(JarEntry jarEntry) throws IOException {
BufferedReader buffer = new BufferedReader(new InputStreamReader(
wikittyJarRepository.getInputStream(jarEntry)));
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-11 15:48:08 UTC (rev 1075)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-12 08:46:28 UTC (rev 1076)
@@ -5,7 +5,10 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -429,5 +432,96 @@
}
}
+
+ protected abstract Map<String, Wikitty> getAllWikitties();
+
+
+ @Override
+ public List<PagedResult<String>> findAllByCriteria(String securityToken,
+ List<Criteria> criteria) {
+
+
+ List<PagedResult<String>> result = new ArrayList<PagedResult<String>>();
+
+ Map<String, Wikitty> wikitties = getAllWikitties();
+
+ // for each criteria
+ for (Criteria cr : criteria) {
+ // prepare restriction on result
+ int firstIndex = cr.getFirstIndex();
+ int endIndex = cr.getEndIndex();
+ List<String> ids = new LinkedList<String>();
+ int currentIndex = 0;
+ Restriction restriction = cr.getRestriction();
+ // for each wikitty check if it match the resttriction
+ for (Entry<String, Wikitty> entry : wikitties.entrySet()) {
+ String id = entry.getKey();
+ Wikitty w = entry.getValue();
+ // if macth
+
+
+ if (checkRestriction(restriction, w)) {
+
+ // increment result number
+ currentIndex++;
+ if (currentIndex > firstIndex) {
+ ids.add(id);
+ }
+ // if the number of wikitty found is match
+ // stop the search for other wikitty
+ if (endIndex >= 0 && currentIndex >= endIndex) {
+ break;
+ }
+ }
+ }
+ result.add(new PagedResult<String>(firstIndex, ids.size(),
+ restriction.toString(), null, ids));
+
+ }
+ return result;
+ }
+
+
+ @Override
+ public List<String> findByCriteria(String securityToken,
+ List<Criteria> criteria) {
+ List<String> result = new ArrayList<String>();
+
+ Map<String, Wikitty> wikitties = getAllWikitties();
+ // for each criteria
+ for (Criteria cr : criteria) {
+ // prepare restriction on result
+ int firstIndex = cr.getFirstIndex();
+ int endIndex = cr.getEndIndex();
+ List<String> ids = new LinkedList<String>();
+ int currentIndex = 0;
+ Restriction restriction = cr.getRestriction();
+ // for each wikitty check if it match the resttriction
+ for (Entry<String, Wikitty> entry : wikitties.entrySet()) {
+ String id = entry.getKey();
+ Wikitty w = entry.getValue();
+ // if macth
+
+ log.debug("Check restriction for wikitty: " + w
+ + " Restriction:" + restriction);
+
+ if (checkRestriction(restriction, w)) {
+ // increment result number
+ currentIndex++;
+ if (currentIndex > firstIndex) {
+ ids.add(id);
+ }
+ // if the number of wikitty found is match
+ // stop the search for other wikitty
+ if (endIndex >= 0 && currentIndex >= endIndex) {
+ break;
+ }
+ }
+ }
+ result.addAll(ids);
+ }
+ return result;
+ }
+
}
\ No newline at end of file
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-11 15:48:08 UTC (rev 1075)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-12 08:46:28 UTC (rev 1076)
@@ -646,10 +646,10 @@
return result;
}
+
+
@Override
- public List<PagedResult<String>> findAllByCriteria(String securityToken,
- List<Criteria> criteria) {
-
+ protected Map<String, Wikitty> getAllWikitties() {
Map<String, Wikitty> wikitties = new HashMap<String, Wikitty>();
try {
// construct properly with the working directory and the label
@@ -680,113 +680,12 @@
// TODO mfortun-2011-04-20 really handle exception
e.printStackTrace();
}
-
- List<PagedResult<String>> result = new ArrayList<PagedResult<String>>();
-
- // for each criteria
- for (Criteria cr : criteria) {
- // prepare restriction on result
- int firstIndex = cr.getFirstIndex();
- int endIndex = cr.getEndIndex();
- List<String> ids = new LinkedList<String>();
- int currentIndex = 0;
- Restriction restriction = cr.getRestriction();
- // for each wikitty check if it match the resttriction
- for (Entry<String, Wikitty> entry : wikitties.entrySet()) {
- String id = entry.getKey();
- Wikitty w = entry.getValue();
- // if macth
-
-
- if (checkRestriction(restriction, w)) {
-
- // increment result number
- currentIndex++;
- if (currentIndex > firstIndex) {
- ids.add(id);
- }
- // if the number of wikitty found is match
- // stop the search for other wikitty
- if (endIndex >= 0 && currentIndex >= endIndex) {
- break;
- }
- }
- }
- result.add(new PagedResult<String>(firstIndex, ids.size(),
- restriction.toString(), null, ids));
-
- }
- return result;
+ return wikitties;
}
+
- @Override
- public List<String> findByCriteria(String securityToken,
- List<Criteria> criteria) {
- List<String> result = new ArrayList<String>();
+
- Map<String, Wikitty> wikitties = new HashMap<String, Wikitty>();
- try {
- // construct properly with the working directory and the label
- // the starts directory
- String labelToDir = WikittyFileUtil.labelToPath(label);
- File starts = new File(homeFile.getAbsolutePath() + File.separator
- + labelToDir);
- if (starts.exists()) {
- // check for new file, modifications and deleted wikitty
- harvestNewCheckModificationsAndDeleted(starts, label);
- }
-
- // load all locals wikitty
- BidiMap map = harvestLocalWikitties(starts, true);
-
- // put all local wikitties in a map
- for (Object o : map.keySet()) {
- String id = (String) o;
- FileSystemWIkittyId location = (FileSystemWIkittyId) map
- .get(id);
-
- wikitties.put(id, restore(id, location));
-
- }
- } catch (Exception e) {
- // TODO mfortun-2011-04-21 really handle exception
- e.printStackTrace();
- }
- // for each criteria
- for (Criteria cr : criteria) {
- // prepare restriction on result
- int firstIndex = cr.getFirstIndex();
- int endIndex = cr.getEndIndex();
- List<String> ids = new LinkedList<String>();
- int currentIndex = 0;
- Restriction restriction = cr.getRestriction();
- // for each wikitty check if it match the resttriction
- for (Entry<String, Wikitty> entry : wikitties.entrySet()) {
- String id = entry.getKey();
- Wikitty w = entry.getValue();
- // if macth
-
- log.debug("Check restriction for wikitty: " + w
- + " Restriction:" + restriction);
-
- if (checkRestriction(restriction, w)) {
- // increment result number
- currentIndex++;
- if (currentIndex > firstIndex) {
- ids.add(id);
- }
- // if the number of wikitty found is match
- // stop the search for other wikitty
- if (endIndex >= 0 && currentIndex >= endIndex) {
- break;
- }
- }
- }
- result.addAll(ids);
- }
- return result;
- }
-
@Override
public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
// TODO mfortun-2011-04-05
1
0
r1075 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 11 Jul '11
by mfortun@users.nuiton.org 11 Jul '11
11 Jul '11
Author: mfortun
Date: 2011-07-11 17:48:08 +0200 (Mon, 11 Jul 2011)
New Revision: 1075
Url: http://nuiton.org/repositories/revision/wikitty/1075
Log:
* add some basic method for wikitty service jar loader
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 15:37:11 UTC (rev 1074)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 15:48:08 UTC (rev 1075)
@@ -94,8 +94,6 @@
wikittyMetadata
.load(wikittyJarRepository.getInputStream(metaEntry));
- System.out.println(wikittyMetadata);
- System.out.println(wikittyIndex);
} catch (IOException e) {
// TODO mfortun-2011-07-11 realy handle exception
@@ -147,26 +145,18 @@
@Override
public boolean canWrite(String securityToken, Wikitty wikitty) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return false;
+ return false;
}
@Override
public boolean canDelete(String securityToken, String wikittyId) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return false;
-
+ return false;
}
@Override
public boolean canRead(String securityToken, String wikittyId) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return false;
-
+ return exists(securityToken, wikittyId);
}
@Override
1
0
r1074 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 11 Jul '11
by mfortun@users.nuiton.org 11 Jul '11
11 Jul '11
Author: mfortun
Date: 2011-07-11 17:37:11 +0200 (Mon, 11 Jul 2011)
New Revision: 1074
Url: http://nuiton.org/repositories/revision/wikitty/1074
Log:
* add property to save separator used to write label inside properties
* implemented restore/exist/is delete/constructor for wikitty service jar loader
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-11 09:00:59 UTC (rev 1073)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-11 15:37:11 UTC (rev 1074)
@@ -45,6 +45,7 @@
public static String SOURCE_EXTENSION = ".java";
public static String COMPILED_EXTENSION = ".class";
+ public static String PATH_SEPARATOR="path.separator";
/*
* Class don't have to be instantiate
@@ -100,6 +101,8 @@
PropertiesExtended metaProperties = new PropertiesExtended(
filePropertiesMeta);
+
+ metaProperties.setProperty(PATH_SEPARATOR, File.separator);
// iterate wikitty
// - write file
// - write property
@@ -296,14 +299,8 @@
}
-
-
-
classContent += "\n}\n}\n";
-
-
-
-
+
return classContent;
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 09:00:59 UTC (rev 1073)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 15:37:11 UTC (rev 1074)
@@ -1,10 +1,38 @@
package org.nuiton.wikitty.publication.externalize;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import java.util.Collection;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Properties;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.util.StringUtil;
+import org.nuiton.wikitty.WikittyConfigOption;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.WikittyServiceFactory;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
+import org.nuiton.wikitty.entities.WikittyImpl;
+import org.nuiton.wikitty.entities.WikittyLabelHelper;
+import org.nuiton.wikitty.entities.WikittyLabelImpl;
+import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper;
+import org.nuiton.wikitty.publication.entities.WikittyPubDataImpl;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiledHelper;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiledImpl;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextImpl;
import org.nuiton.wikitty.publication.synchro.AbstractWikittyFileService;
+import org.nuiton.wikitty.publication.synchro.MimeTypePubHelper;
+import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.TreeNodeResult;
@@ -15,24 +43,66 @@
* Wikitty service use to load wikitty store inside jar file
*
* @author mfortun
- *
+ *
*/
public class WikittyServiceJarLoader extends AbstractWikittyFileService {
-
-
+
+ public static String JAR_LOCATION_KEY = "wikitty.publication.repository.jar";
+
+ protected JarFile wikittyJarRepository;
+
+ protected Properties wikittyIndex;
+ protected Properties wikittyMetadata;
+
/*
* Implementer :
- *
- * restore
- * findByCriteria
- * findAllByCriteria
- * exist ?
*
- *
- *
+ * restore findByCriteria findAllByCriteria
*/
-
-
+
+ static public void main(String[] args) {
+
+ ApplicationConfig config = new ApplicationConfig();
+ config.setOption(JAR_LOCATION_KEY,
+ "/home/Manou/testWP/pub-externalized.jar");
+ config.setOption(
+ WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS.getKey(),
+ WikittyServiceJarLoader.class.getName());
+ WikittyProxy proxy = new WikittyProxy(
+ WikittyServiceFactory.buildWikittyService(config));
+
+ System.out.println(proxy
+ .restore("e443dbbe-b461-41bd-b5b6-b612e964cb0d"));
+
+ }
+
+ public WikittyServiceJarLoader(ApplicationConfig config) {
+ try {
+ File jarLocation = new File(config.getOption(JAR_LOCATION_KEY));
+
+ wikittyJarRepository = new JarFile(jarLocation);
+
+ JarEntry metaEntry = wikittyJarRepository
+ .getJarEntry("meta.properties");
+ JarEntry idEntry = wikittyJarRepository
+ .getJarEntry("ids.properties");
+
+ wikittyIndex = new Properties();
+ wikittyIndex.load(wikittyJarRepository.getInputStream(idEntry));
+
+ wikittyMetadata = new Properties();
+ wikittyMetadata
+ .load(wikittyJarRepository.getInputStream(metaEntry));
+
+ System.out.println(wikittyMetadata);
+ System.out.println(wikittyIndex);
+
+ } catch (IOException e) {
+ // TODO mfortun-2011-07-11 realy handle exception
+ e.printStackTrace();
+ }
+ }
+
@Override
public void addWikittyServiceListener(WikittyListener listener,
ServiceListenerType type) {
@@ -55,7 +125,7 @@
public String login(String login, String password) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -71,7 +141,7 @@
public WikittyEvent clear(String securityToken) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -79,7 +149,7 @@
public boolean canWrite(String securityToken, Wikitty wikitty) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return false;
+ // return false;
}
@@ -87,7 +157,7 @@
public boolean canDelete(String securityToken, String wikittyId) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return false;
+ // return false;
}
@@ -95,24 +165,18 @@
public boolean canRead(String securityToken, String wikittyId) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return false;
+ // return false;
}
@Override
public boolean exists(String securityToken, String wikittyId) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- //return false;
-
+ return wikittyIndex.containsKey(wikittyId);
}
@Override
public boolean isDeleted(String securityToken, String wikittyId) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- //return false;
-
+ return false;
}
@Override
@@ -120,7 +184,7 @@
boolean force) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -129,7 +193,7 @@
Collection<Wikitty> wikitties, boolean force) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -137,7 +201,7 @@
public List<String> getAllExtensionIds(String securityToken) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -146,7 +210,7 @@
String extensionName) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -155,7 +219,7 @@
Collection<WikittyExtension> exts) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -164,7 +228,7 @@
Collection<String> extNames) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -173,7 +237,7 @@
String extensionId) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -182,23 +246,104 @@
String name) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@Override
- public List<Wikitty> restore(String securityToken, List<String> id) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ public List<Wikitty> restore(String securityToken, List<String> ids) {
+ List<Wikitty> result = new LinkedList<Wikitty>();
+
+ try {
+ for (String wikittyId : ids) {
+ // if wikitty doesn't exist jump to the next id
+ if (!exists(securityToken, wikittyId)) {
+
+ continue;
+ }
+
+ String fileExtension = wikittyMetadata.getProperty(wikittyId
+ + WikittyPublicationExternalize.EXTENSION_SUFFIX);
+ String path = wikittyIndex.getProperty(wikittyId);
+ String version = wikittyMetadata.getProperty(wikittyId
+ + WikittyPublicationExternalize.VERSION_SUFFIX);
+
+ JarEntry wikittyJared = wikittyJarRepository.getJarEntry(path
+ + "." + fileExtension);
+
+ MimeTypePubHelper mimeHelper = new MimeTypePubHelper();
+
+ Wikitty wikit = new WikittyImpl(wikittyId);
+ wikit.setVersion(version);
+
+ wikit.addExtension(WikittyLabelImpl.extensionWikittyLabel);
+
+ // set labels computate name
+ String sep = wikittyMetadata
+ .getProperty(WikittyPublicationExternalize.PATH_SEPARATOR);
+ String[] namPath = StringUtil.split(path, sep);
+ String wikittyName = namPath[namPath.length - 1];
+
+ String label = "";
+ for (int i = 0; i < namPath.length - 1; i++) {
+ label += namPath[i];
+ if (i < namPath.length - 2) {
+ label += WikittyPublicationFileSystem.WIKITTYLABEL_SEPARATOR;
+ }
+ }
+
+ WikittyLabelHelper.addLabels(wikit, label);
+
+ if (mimeHelper.isPubTextMime(fileExtension)) {
+ // wikitty pub text compiled
+ wikit.addExtension(WikittyPubTextImpl.extensions);
+ wikit.addExtension(WikittyPubTextCompiledImpl.extensionWikittyPubTextCompiled);
+
+ // basic field
+ WikittyPubTextHelper.setFileExtension(wikit, fileExtension);
+ WikittyPubTextHelper.setMimeType(wikit,
+ mimeHelper.getMimeForExtension(fileExtension));
+ WikittyPubTextHelper.setName(wikit, wikittyName);
+
+ // contents fields:
+ JarEntry wikittyclass = wikittyJarRepository
+ .getJarEntry(path
+ + WikittyPublicationExternalize.COMPILED_EXTENSION);
+
+ WikittyPubTextHelper.setContent(wikit,
+ getStringContent(wikittyJared));
+ WikittyPubTextCompiledHelper.setByteCode(wikit,
+ this.getByteContent(wikittyclass));
+
+ } else {
+ // wikitty pub data
+ wikit.addExtension(WikittyPubDataImpl.extensionWikittyPubData);
+ WikittyPubDataHelper.setMimeType(wikit,
+ mimeHelper.getMimeForExtension(fileExtension));
+
+ WikittyPubDataHelper.setName(wikit, wikittyName);
+
+ WikittyPubDataHelper.setFileExtension(wikit, fileExtension);
+ WikittyPubDataHelper.setContent(wikit,
+ this.getByteContent(wikittyJared));
+ }
+
+ result.add(wikit);
+ }
+
+ } catch (Exception e) {
+ // TODO mfortun-2011-07-11 really handle exception
+ e.printStackTrace();
+ }
+ return result;
}
@Override
public WikittyEvent delete(String securityToken, Collection<String> ids) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -207,7 +352,7 @@
List<Criteria> criteria) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -216,7 +361,7 @@
List<Criteria> criteria) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -224,7 +369,7 @@
public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -233,7 +378,7 @@
String wikittyId, int depth, boolean count, Criteria filter) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -242,7 +387,7 @@
String version) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -254,4 +399,43 @@
}
+ public String getStringContent(JarEntry jarEntry) throws IOException {
+ BufferedReader buffer = new BufferedReader(new InputStreamReader(
+ wikittyJarRepository.getInputStream(jarEntry)));
+
+ StringBuffer result = new StringBuffer();
+ char[] cbuf = new char[2000];
+
+ int nb = buffer.read(cbuf);
+ while (nb != -1) {
+ result.append(cbuf, 0, nb);
+ nb = buffer.read(cbuf);
+ }
+ buffer.close();
+ return result.toString();
+
+ }
+
+ public byte[] getByteContent(JarEntry jarEnt) throws IOException {
+
+ ByteArrayOutputStream content;
+ // Extract this to a byte utils ?
+ InputStream in = new BufferedInputStream(
+ wikittyJarRepository.getInputStream(jarEnt));
+ try {
+ content = new ByteArrayOutputStream();
+ BufferedOutputStream tmp = new BufferedOutputStream(content);
+ try {
+ for (int b = in.read(); b != -1; b = in.read()) {
+ tmp.write(b);
+ }
+ } finally {
+ tmp.close();
+ }
+ } finally {
+ in.close();
+ }
+ return content.toByteArray();
+ }
+
}
1
0
r1073 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 11 Jul '11
by mfortun@users.nuiton.org 11 Jul '11
11 Jul '11
Author: mfortun
Date: 2011-07-11 11:00:59 +0200 (Mon, 11 Jul 2011)
New Revision: 1073
Url: http://nuiton.org/repositories/revision/wikitty/1073
Log:
* change java code template
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 16:07:38 UTC (rev 1072)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-11 09:00:59 UTC (rev 1073)
@@ -3,6 +3,7 @@
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Set;
import org.apache.commons.lang.StringEscapeUtils;
import org.nuiton.util.ApplicationConfig;
@@ -14,6 +15,7 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyLabel;
import org.nuiton.wikitty.entities.WikittyLabelHelper;
+import org.nuiton.wikitty.publication.action.PublicationActionEval;
import org.nuiton.wikitty.publication.entities.WikittyPubData;
import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
@@ -242,7 +244,6 @@
String content =wikitty.getContent();
String mimeType = wikitty.getMimeType();
String className=wikitty.getName();//+"PublicationClass";
- String script="";
String classContent = "";
//Set<String> labels = (Set<String>) wikitty.getField(WikittyLabel.EXT_WIKITTYLABEL, WikittyLabel.FIELD_WIKITTYLABEL_LABELS);
@@ -252,6 +253,9 @@
classContent += "import org.apache.commons.logging.LogFactory;";
classContent += "import org.nuiton.wikitty.ScriptEvaluator;";
classContent += "import "+ AbstractDecoredClass.class.getName() + ";";
+ classContent += "import org.nuiton.wikitty.entities.*;";
+ classContent += "import org.nuiton.wikitty.publication.entities.*;";
+ classContent += "import org.nuiton.wikitty.publication.action.*;";
classContent += "import java.util.*;";
classContent += "public class " + className + " extends " + AbstractDecoredClass.class.getSimpleName() + " {";
@@ -281,6 +285,13 @@
* ?
*
*/
+ // contruct variables that can be used inside the java code.
+ classContent = "PublicationContext "+PublicationActionEval.CONTEXT_VAR+" = bindings.get(\""+PublicationActionEval.CONTEXT_VAR+"\");";
+ classContent = "PublicationActionEval "+PublicationActionEval.EVAL_VAR+" = bindings.get(\""+PublicationActionEval.EVAL_VAR+"\");";
+ classContent = "String "+PublicationActionEval.PAGE_NAME_VAR+" = bindings.get(\""+PublicationActionEval.PAGE_NAME_VAR+"\");";
+ classContent = "List<String> "+PublicationActionEval.SUBCONTEXT_VAR+" = bindings.get(\""+PublicationActionEval.SUBCONTEXT_VAR+"\");";
+ classContent = "Wikitty "+PublicationActionEval.WIKITTY_VAR+" = bindings.get(\""+PublicationActionEval.WIKITTY_VAR+"\");";
+
classContent += content;
}
1
0
r1072 - in trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication: action externalize
by mfortun@users.nuiton.org 08 Jul '11
by mfortun@users.nuiton.org 08 Jul '11
08 Jul '11
Author: mfortun
Date: 2011-07-08 18:07:38 +0200 (Fri, 08 Jul 2011)
New Revision: 1072
Url: http://nuiton.org/repositories/revision/wikitty/1072
Log:
* Complete eval mechanism in eval action to handler compiled
* Complete classloader
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-07-08 14:47:15 UTC (rev 1071)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-07-08 16:07:38 UTC (rev 1072)
@@ -21,7 +21,11 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.publication.WikittyPublicationConfig;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiled;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiledHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper;
+import org.nuiton.wikitty.publication.externalize.AbstractDecoredClass;
+import org.nuiton.wikitty.publication.externalize.WikittyPublicationClassLoader;
import org.nuiton.wikitty.search.Criteria;
import com.opensymphony.xwork2.ActionContext;
@@ -102,6 +106,46 @@
context.setContentType("text/plain");
result = String.format("no data found for criteria '%s'",
criteria);
+ } else if (w
+ .hasExtension(WikittyPubTextCompiled.EXT_WIKITTYPUBTEXTCOMPILED)) {
+
+ byte[] content = WikittyPubTextCompiledHelper.getByteCode(w);
+ if (content == null) {
+ result = getError(context);
+ } else {
+
+ /*
+ * if wikitty pub text compiled we load the class corresponding
+ * to the byte code contained.
+ * And then invoke the eval method on it
+ */
+ String name= WikittyPubTextHelper.getName(w);
+
+ // supprime de subcontext ce qui a ete utilise dans cette
+ // methode
+ subContext = new ArrayList<String>(subContext.subList(1,
+ subContext.size()));
+
+ Map<String, Object> bindings = new HashMap<String, Object>();
+ bindings.put(PAGE_NAME_VAR, criteria.getName());
+ bindings.put(CONTEXT_VAR, context);
+ bindings.put(SUBCONTEXT_VAR, subContext);
+ bindings.put(WIKITTY_VAR, w);
+ bindings.put(EVAL_VAR, this);
+
+ WikittyPublicationClassLoader classloader = new WikittyPublicationClassLoader();
+
+ Class<? extends AbstractDecoredClass> clazz = (Class<? extends AbstractDecoredClass>) classloader.addClass(name, content);
+
+ try {
+ result = clazz.newInstance().eval(bindings);
+ } catch (Exception e) {
+ // TODO Mfortun-2011-07-08 really handle exception
+ e.printStackTrace();
+ result = getError(context);
+ }
+ }
+
} else {
String content = WikittyPubTextHelper.getContent(w);
@@ -181,7 +225,6 @@
this.inputStream = inputStream;
}
-
@Override
public HttpServletRequest getRequest() {
return request;
@@ -194,24 +237,23 @@
@Override
public String getActionName() {
- // TODO mfortun-2011-05-09 really needed ?
+ // TODO mfortun-2011-05-09 really needed ?
throw new UnsupportedOperationException("not yet implemented");
// return null;
}
-
-
@Override
public String makeUrl(String url) {
String finalUrl = url;
if (!finalUrl.startsWith("/")) {
finalUrl = "/" + finalUrl;
}
- //TODO mforun-2011-05-09 rework on this method
-
- finalUrl = getRequest().getContextPath() + "/" + getArgument(CONTEXT_KEY, "") + finalUrl;
- finalUrl = getResponse().encodeURL(finalUrl)+".action";
+ // TODO mforun-2011-05-09 rework on this method
+
+ finalUrl = getRequest().getContextPath() + "/"
+ + getArgument(CONTEXT_KEY, "") + finalUrl;
+ finalUrl = getResponse().encodeURL(finalUrl) + ".action";
if (log.isInfoEnabled()) {
log.info(String.format("transforme url from '%s' to '%s'", url,
finalUrl));
@@ -227,7 +269,7 @@
@Override
public List<String> getMandatoryArguments() {
- // TODO mfortun-2011-05-09 really needed ?
+ // TODO mfortun-2011-05-09 really needed ?
throw new UnsupportedOperationException("not yet implemented");
// return null;
@@ -235,7 +277,7 @@
@Override
public Map<String, String> getArguments() {
- // TODO mfortun-2011-05-09 really needed ?
+ // TODO mfortun-2011-05-09 really needed ?
throw new UnsupportedOperationException("not yet implemented");
// return null;
@@ -243,15 +285,12 @@
@Override
public Map<String, byte[]> getArgumentFiles() {
- // TODO mfortun-2011-05-09 really needed ?
+ // TODO mfortun-2011-05-09 really needed ?
throw new UnsupportedOperationException("not yet implemented");
// return null;
}
-
-
-
public String getContentType() {
return contentType;
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java 2011-07-08 14:47:15 UTC (rev 1071)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java 2011-07-08 16:07:38 UTC (rev 1072)
@@ -1,15 +1,16 @@
package org.nuiton.wikitty.publication.externalize;
-
public class WikittyPublicationClassLoader extends ClassLoader {
-
- public Class<?> addClass(String name, byte[] b ){
+ public WikittyPublicationClassLoader() {
+ super(WikittyPublicationClassLoader.class.getClassLoader());
+ }
+
+ public Class<?> addClass(String name, byte[] b) {
int off = 0;
int len = b.length;
+
return super.defineClass(name, b, off, len);
}
-
-
-
+
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 14:47:15 UTC (rev 1071)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 16:07:38 UTC (rev 1072)
@@ -1,24 +1,13 @@
package org.nuiton.wikitty.publication.externalize;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.List;
import java.util.Set;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.jar.JarOutputStream;
-import java.util.jar.Manifest;
-
import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
import org.nuiton.util.FileUtil;
-import org.nuiton.util.StringUtil;
-import org.nuiton.util.ZipUtil;
-import org.nuiton.wikitty.ScriptEvaluator;
import org.nuiton.wikitty.WikittyConfigOption;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyServiceFactory;
@@ -273,7 +262,8 @@
-
+ // TODO mfortun-2011-07-08 write a better "filter" must isolate specific
+ // mime type that correspond to precompilable langague
if (mimeType!="java"){
classContent += "Object result = null;";
classContent += "String content = \""+StringEscapeUtils.escapeJava(content) +"\";";
@@ -283,6 +273,16 @@
classContent += "return result;";
} else {
+ /*
+ * Iterate on element that must be in the context and write
+ *
+ * classContent = "+type+" "+name+" = bindings.get(\""+name+"\");";
+ *
+ * ?
+ *
+ */
+ classContent += content;
+
}
1
0
r1071 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 08 Jul '11
by mfortun@users.nuiton.org 08 Jul '11
08 Jul '11
Author: mfortun
Date: 2011-07-08 16:47:15 +0200 (Fri, 08 Jul 2011)
New Revision: 1071
Url: http://nuiton.org/repositories/revision/wikitty/1071
Log:
* Abstract class for decoratedClass usefull for pubtext compiled
* compile helper used from isisfish
* base for custome class loader
* scripted pub text handle
Added:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java 2011-07-08 14:47:15 UTC (rev 1071)
@@ -0,0 +1,11 @@
+package org.nuiton.wikitty.publication.externalize;
+
+import java.util.Map;
+
+public abstract class AbstractDecoredClass {
+
+
+ public abstract Object eval(Map<String, Object> bindings) throws Exception ;
+
+
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java 2011-07-08 14:47:15 UTC (rev 1071)
@@ -0,0 +1,241 @@
+package org.nuiton.wikitty.publication.externalize;
+
+
+
+import static org.nuiton.i18n.I18n._;
+
+
+import java.io.File;
+import java.io.PrintWriter;
+
+import java.net.URL;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.FileUtil;
+
+import com.sun.tools.javac.api.JavacTool;
+
+
+/**
+ * Class reuse from the isis fish project.
+ *
+ *
+ * Compile helper used to compile Java code.
+ *
+ * JDK must be installed to use compilation.
+ * (JRE won't work).
+ *
+ * Created: 12 janv. 2006 15:29:53
+ *
+ * @author poussin
+ * @version $Revision: 3124 $
+ *
+ * Last update: $Date: 2010-11-29 19:14:09 +0100 (lun. 29 nov. 2010) $
+ * by : $Author: chatellier $
+ */
+public class CompileHelper {
+
+ /** Logger for this class. */
+ private static final Log log = LogFactory.getLog(CompileHelper.class);
+
+
+ /**
+ * Recherche tous les fichiers qui un source plus recent que la version compilé.
+ *
+ * @param srcDir
+ * @param destDir
+ * @return File list
+ */
+ public static List<File> searchSrcToCompile(File srcDir, File destDir) {
+ List<File> result = new ArrayList<File>();
+ for (File src : srcDir.listFiles()) {
+ File dest = new File(FileUtil.basename(src, ".java"), ".class");
+ if (src.getName().endsWith(".java") && FileUtil.isNewer(src, dest)) {
+ result.add(src);
+ }
+ }
+ return result;
+ }
+
+
+
+
+
+
+ /**
+ * Methode permettant de compiler un fichier Java.
+ *
+ * @param rootSrc le répertoire ou se trouve les sources
+ * @param src Le fichier source a compiler, il doit etre dans un sous
+ * répertoire de rootSrc en fonction du package
+ * @param dest le repertoire destination de la compilation
+ * @param out l'objet sur lequel on ecrit la sortie (erreur) de la
+ * compilation
+ * @return un nombre different de 0 s'il y a une erreur
+ * <li> -1000 si l'exception vient de la recherche du compilateur par
+ * introspection
+ * <li> -10000 si une autre exception
+ * <li> sinon les valeurs retourné par le compilateur java
+ */
+ public static int compile(File rootSrc, File src, File dest, PrintWriter out) {
+ int result = compile(rootSrc, Collections.singletonList(src), dest, out);
+ return result;
+ }
+
+ /**
+ * Methode permettant de compiler un ensemble de fichiers Java.
+ *
+ * @param rootSrc le répertoire ou se trouve les sources
+ * @param src Le fichier source a compiler, il doit etre dans un sous
+ * répertoire de rootSrc en fonction du package
+ * @param dest le repertoire destination de la compilation
+ * @param out l'objet sur lequel on ecrit la sortie (erreur) de la
+ * compilation
+ * @return un nombre different de 0 s'il y a une erreur
+ * <li> -1000 si l'exception vient de la recherche du compilateur par
+ * introspection
+ * <li> -10000 si une autre exception
+ * <li> sinon les valeurs retourné par le compilateur java
+ */
+ public static int compile(File rootSrc, Collection<File> src, File dest,
+ PrintWriter out) {
+ int result = -10000;
+ try {
+ List<File> classpath = new ArrayList<File>();
+ classpath.add(rootSrc.getAbsoluteFile());
+
+ result = compile(classpath, src, dest, out);
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Compilation failed", eee);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Compile un fichier java.
+ *
+ * @param src les fichiers java source
+ * @param dest le repertoire destination
+ */
+ protected static int compile(List<File> classpath, Collection<File> src,
+ File dest, PrintWriter out) {
+ dest.mkdirs();
+
+ int result = -1000;
+ try {
+ JavaCompiler compiler = JavacTool.create();
+ // Use system compiler
+ // JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+ StandardJavaFileManager fileManager = compiler
+ .getStandardFileManager(null, null, null);
+ Iterable<? extends JavaFileObject> compilationUnits = fileManager
+ .getJavaFileObjectsFromFiles(src);
+
+ // Options de compilations
+ String classpathAsString = getClassPathAsString(classpath);
+ List<String> args = new ArrayList<String>();
+ args.add("-g");
+ // Show a description of each use or override of a deprecated member or class.
+ args.add("-deprecation");
+ args.add("-classpath");
+ args.add(classpathAsString);
+ args.add("-d");
+ args.add(dest.getAbsolutePath());
+
+ // Compilation
+ boolean b = compiler.getTask(out, fileManager, null, args, null,
+ compilationUnits).call();
+ // on retourne 0 si tout s'est bien déroulé et -1 sinon
+ result = b ? 0 : -1;
+
+ fileManager.close();
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't get compiler", eee);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Return full classpath (for compilation or javadoc) as string.
+ * Separated by {@link File#pathSeparator}.
+ *
+ * Add :
+ * <ul>
+ * <li>System.getProperty("java.class.path")
+ * <li>All first jar dependency (META-INF/MANIFEST.MF)
+ * </ul>
+ * @param classpath initial classpath
+ * @return classpath as string
+ * @throws Exception
+ */
+ public static String getClassPathAsString(List<File> classpath)
+ throws Exception {
+ String result = StringUtils.join(classpath.iterator(),
+ File.pathSeparator);
+
+ // chatellier : since 20090512 java.class.path in not added to
+ // classpath.
+ // result in duplicated entry or non normalised entry
+ // en compilation fail some times
+ //+ File.pathSeparator + System.getProperty("java.class.path");
+
+ // Ajout des jars
+ for (Enumeration<?> e = CompileHelper.class.getClassLoader()
+ .getResources("META-INF/MANIFEST.MF"); e.hasMoreElements();) {
+ URL url = (URL) e.nextElement();
+ if (log.isDebugEnabled()) {
+ log.debug("Found manifest : " + url);
+ }
+ if ((url != null) && url.getFile().startsWith("file:/")) {
+ String jarName = url.getPath().substring(5,
+ url.getPath().indexOf("!"));
+ if (!result.contains(jarName)) {
+ result += File.pathSeparator + jarName;
+ }
+ }
+ }
+
+ // chatellier : mais sous eclipse par exemple, on a besoin du classpath
+ // on test que le class path n'est pas un jar et qu'il n'apparait
+ // pas deja :
+ String systemClassPath = System.getProperty("java.class.path");
+ String[] systemClassPathes = systemClassPath.split(File.pathSeparator);
+ for (String path : systemClassPathes) {
+ String absolutePath = new File(path).getCanonicalPath();
+ if (!result.contains(absolutePath)) {
+ result += File.pathSeparator + absolutePath;
+ }
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("CLASSPATH : " + result);
+ }
+
+ return result;
+ }
+
+
+
+
+
+
+
+
+
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java 2011-07-08 14:47:15 UTC (rev 1071)
@@ -0,0 +1,15 @@
+package org.nuiton.wikitty.publication.externalize;
+
+
+public class WikittyPublicationClassLoader extends ClassLoader {
+
+
+ public Class<?> addClass(String name, byte[] b ){
+ int off = 0;
+ int len = b.length;
+ return super.defineClass(name, b, off, len);
+ }
+
+
+
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 10:26:15 UTC (rev 1070)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 14:47:15 UTC (rev 1071)
@@ -3,6 +3,7 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.PrintWriter;
import java.util.List;
import java.util.Set;
import java.util.jar.JarEntry;
@@ -10,10 +11,14 @@
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
import org.nuiton.util.FileUtil;
+import org.nuiton.util.StringUtil;
import org.nuiton.util.ZipUtil;
+import org.nuiton.wikitty.ScriptEvaluator;
import org.nuiton.wikitty.WikittyConfigOption;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyServiceFactory;
@@ -24,12 +29,14 @@
import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextImpl;
import org.nuiton.wikitty.publication.synchro.PropertiesExtended;
import org.nuiton.wikitty.publication.synchro.WikittyFileUtil;
import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.search.operators.Element;
/**
* Entry point for the main externalize functionnality
@@ -44,6 +51,9 @@
public static String VERSION_SUFFIX = ".version";
public static String EXTENSION_SUFFIX = ".extension";
+
+ public static String SOURCE_EXTENSION = ".java";
+ public static String COMPILED_EXTENSION = ".class";
/*
* Class don't have to be instantiate
@@ -145,14 +155,35 @@
String content = WikittyPubTextHelper.getContent(wikit);
+ // TODO 2011-07-08 change this later or not, java source will be
+ // erase by the second file.
+
// Write original file
wikittyFile = new File(
tempDirectory.getAbsolutePath()+File.separator+
labelPath + name + "." + extension);
wikittyFile.createNewFile();
FileUtil.writeString(wikittyFile,content );
+
+ WikittyPubText currentPubText= new WikittyPubTextImpl(wikit);
+
+ File javaFile = new File(tempDirectory.getAbsolutePath()+File.separator+
+ labelPath + name + SOURCE_EXTENSION);
+ javaFile.createNewFile();
+ String codeClass = getCode(currentPubText);
+ FileUtil.writeString(javaFile, codeClass);
+
+ File classDirectory = new File(tempDirectory.getAbsolutePath()+File.separator+
+ labelPath );//+ name + COMPILED_EXTENSION);
+ //classFile.createNewFile();
+
+ PrintWriter writer = new PrintWriter(System.out);
+ // compile
+ CompileHelper.compile(tempDirectory, javaFile, classDirectory,writer );
+
+
// write properties
idProperties.put(id, labelPath + name);
metaProperties.put(id + EXTENSION_SUFFIX,
@@ -218,4 +249,54 @@
+ public static String getCode(WikittyPubText wikitty){
+ String content =wikitty.getContent();
+ String mimeType = wikitty.getMimeType();
+ String className=wikitty.getName();//+"PublicationClass";
+ String script="";
+ String classContent = "";
+
+ //Set<String> labels = (Set<String>) wikitty.getField(WikittyLabel.EXT_WIKITTYLABEL, WikittyLabel.FIELD_WIKITTYLABEL_LABELS);
+ //classContent += "package org.nuiton.wikitty.publication;" ;
+ //classContent += "package "+ labels.toArray()[0].toString() +";";
+ classContent += "import org.apache.commons.logging.Log;";
+ classContent += "import org.apache.commons.logging.LogFactory;";
+ classContent += "import org.nuiton.wikitty.ScriptEvaluator;";
+ classContent += "import "+ AbstractDecoredClass.class.getName() + ";";
+ classContent += "import java.util.*;";
+
+ classContent += "public class " + className + " extends " + AbstractDecoredClass.class.getSimpleName() + " {";
+
+
+ classContent += "public Object eval(Map<String, Object> bindings ) throws Exception {";
+
+
+
+
+
+ if (mimeType!="java"){
+ classContent += "Object result = null;";
+ classContent += "String content = \""+StringEscapeUtils.escapeJava(content) +"\";";
+ classContent += "String mimeType = \""+StringEscapeUtils.escapeJava(mimeType) +"\";";
+ classContent += "String criteriaName= \""+ Element.ELT_ID+":"+wikitty.getWikittyId()+"\";";
+ classContent +=" result = ScriptEvaluator.eval(null, criteriaName, content, mimeType, bindings);";
+ classContent += "return result;";
+ } else {
+
+ }
+
+
+
+
+ classContent += "\n}\n}\n";
+
+
+
+
+ return classContent;
+ }
+
+
+
+
}
1
0
r1070 - in trunk: wikitty-api wikitty-api/src/test/java/org/nuiton/wikitty/entities wikitty-generators/src/main/java/org/nuiton/wikitty/generator
by echatellier@users.nuiton.org 08 Jul '11
by echatellier@users.nuiton.org 08 Jul '11
08 Jul '11
Author: echatellier
Date: 2011-07-08 12:26:15 +0200 (Fri, 08 Jul 2011)
New Revision: 1070
Url: http://nuiton.org/repositories/revision/wikitty/1070
Log:
Disable purifier, break wikitty
Removed:
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/BirdImpl.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/HorseImpl.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/PegasusImpl.java
Modified:
trunk/wikitty-api/pom.xml
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/WikittyGenerationTest.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java
Modified: trunk/wikitty-api/pom.xml
===================================================================
--- trunk/wikitty-api/pom.xml 2011-07-07 16:15:16 UTC (rev 1069)
+++ trunk/wikitty-api/pom.xml 2011-07-08 10:26:15 UTC (rev 1070)
@@ -171,7 +171,7 @@
<goal>smart-generate</goal>
</goals>
</execution>
- <execution>
+ <!-- <execution>
<id>test-generation</id>
<phase>generate-test-sources</phase>
<configuration>
@@ -188,7 +188,7 @@
<goals>
<goal>smart-generate</goal>
</goals>
- </execution>
+ </execution> -->
</executions>
</plugin>
@@ -257,7 +257,7 @@
http://www.nuiton.org/issues/show/1160
and http://www.nuiton.org/issues/show/1160-->
- <!--profile>
+ <profile>
<id>run-its</id>
<activation>
<property>
@@ -295,7 +295,7 @@
</plugin>
</plugins>
</build>
- </profile-->
+ </profile>
</profiles>
Deleted: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/BirdImpl.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/BirdImpl.java 2011-07-07 16:15:16 UTC (rev 1069)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/BirdImpl.java 2011-07-08 10:26:15 UTC (rev 1070)
@@ -1,39 +0,0 @@
-/*
- * #%L
- *
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Codelutin, Chatellier Eric
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-package org.nuiton.wikitty.entities;
-
-/**
- * Bird impl.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class BirdImpl {
-
-}
Deleted: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/HorseImpl.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/HorseImpl.java 2011-07-07 16:15:16 UTC (rev 1069)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/HorseImpl.java 2011-07-08 10:26:15 UTC (rev 1070)
@@ -1,39 +0,0 @@
-/*
- * #%L
- *
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Codelutin, Chatellier Eric
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-package org.nuiton.wikitty.entities;
-
-/**
- * Horse impl.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class HorseImpl {
-
-}
Deleted: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/PegasusImpl.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/PegasusImpl.java 2011-07-07 16:15:16 UTC (rev 1069)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/PegasusImpl.java 2011-07-08 10:26:15 UTC (rev 1070)
@@ -1,84 +0,0 @@
-/*
- * #%L
- *
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Codelutin, Chatellier Eric
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-package org.nuiton.wikitty.entities;
-
-/**
- * Pegasus impl.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class PegasusImpl extends PegasusAbstract {
-
- /*
- * @see org.nuiton.wikitty.entities.Pegasus#scream()
- */
- @Override
- public void scream() {
- // TODO Auto-generated method stub
-
- }
-
- /*
- * @see org.nuiton.wikitty.entities.Pegasus#walk()
- */
- @Override
- public void walk() {
- // TODO Auto-generated method stub
-
- }
-
- /*
- * @see org.nuiton.wikitty.entities.Bird#fly()
- */
- @Override
- public void fly() {
- // TODO Auto-generated method stub
-
- }
-
- /*
- * @see org.nuiton.wikitty.entities.Bird#getWingsCount()
- */
- @Override
- public int getWingsCount() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- /*
- * @see org.nuiton.wikitty.entities.Bird#setWingsCount(int)
- */
- @Override
- public void setWingsCount(int wingsCount) {
- // TODO Auto-generated method stub
-
- }
-
-}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/WikittyGenerationTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/WikittyGenerationTest.java 2011-07-07 16:15:16 UTC (rev 1069)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/entities/WikittyGenerationTest.java 2011-07-08 10:26:15 UTC (rev 1070)
@@ -48,7 +48,7 @@
*/
@Test
public void testModelEntitiesCompilation() {
- Pegasus pegasus = new PegasusImpl();
- String pegasusRace = pegasus.getRaceFromPegasus();
+ //Pegasus pegasus = new PegasusImpl();
+ //String pegasusRace = pegasus.getRaceFromPegasus();
}
}
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java 2011-07-07 16:15:16 UTC (rev 1069)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java 2011-07-08 10:26:15 UTC (rev 1070)
@@ -67,7 +67,7 @@
//FIXME tchemit 2010-11-28 : still does not work with superclass inheritance, will not generate operation in Abstract classes
- setTransformerTypes(WikittyPurifierTransformer.class);
+ //setTransformerTypes(WikittyPurifierTransformer.class);
setTemplateTypes(
WikittyContractGenerator.class,
WikittyAbstractGenerator.class,
1
0
r1069 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 07 Jul '11
by mfortun@users.nuiton.org 07 Jul '11
07 Jul '11
Author: mfortun
Date: 2011-07-07 18:15:16 +0200 (Thu, 07 Jul 2011)
New Revision: 1069
Url: http://nuiton.org/repositories/revision/wikitty/1069
Log:
* simply handle wikittyPubtext as wikittyPubData
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-07 14:27:10 UTC (rev 1068)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-07 16:15:16 UTC (rev 1069)
@@ -103,6 +103,14 @@
// - write file
// - write property
// - write
+
+ /*
+ * Format des propriétés:
+ *
+ * id.property 18114-1811-181-18=/bob/truc/nuiton/Script
+ *
+ * metadata 18114-1811-181-18.version=1.0 18114-1811-181-18.exention=js
+ */
for (Wikitty wikit : allWikittyOnFS) {
if (!wikit.hasExtension(WikittyLabel.EXT_WIKITTYLABEL)) {
// non usable wikitty
@@ -133,6 +141,19 @@
if (wikit.hasExtension(WikittyPubText.EXT_WIKITTYPUBTEXT)) {
name = WikittyPubTextHelper.getName(wikit);
+ extension = WikittyPubTextHelper.getFileExtension(wikit);
+ String content = WikittyPubTextHelper.getContent(wikit);
+
+
+ // Write original file
+ wikittyFile = new File(
+ tempDirectory.getAbsolutePath()+File.separator+
+ labelPath + name + "." + extension);
+ wikittyFile.createNewFile();
+ FileUtil.writeString(wikittyFile,content );
+
+
+ // write properties
idProperties.put(id, labelPath + name);
metaProperties.put(id + EXTENSION_SUFFIX,
WikittyPubTextHelper.getFileExtension(wikit));
@@ -163,7 +184,6 @@
File jarFile = new File(currentFile + File.separator + DEFAULT_JAR_NAME
+ ".jar");
JarUtil.compressFiles(jarFile, tempDirectory);
- // JarUtil.compressFiles(jarFile, new File("/home/Manou/testWP/wp/") );
// delete tempfile
FileUtil.deleteRecursively(tempDirectory);
@@ -172,30 +192,30 @@
/*
* Algo fonctionnement
*
+ * done:
* Selectionner tout les wikitty sur le file system qui sont dans le dossier
* courant, en servant d'un wikitty publication fileSystem.
*
+ * done:
* On va créer un dossier pour le jar "tempJar" pour chaque wikitty en
* fonction du type: -wikittyPubData: on va l'écrire sous son label le
* fichier dans le dossier tempJar et on va le référencer dans l'index
* central du dossier
*
+ * stay:
* -WikittyPubText: .on va écrire le pub text sous son label le fichier
* correspondant .on va décorer le contenu du wikittyPubText avec les
* éléments script engine etc, on va écrire le .java correspondant .ensuite
* on va compiler le java et écrire le .class correspondant .on écrit les
* metadata et les élément d'index du wikitty pour le retrouver
*
+ *
+ *
+ * done:
* Une fois tout les wikitty traité on va packager le dossier tempJar en jar
* et on va supprimer le dossier tempJar
*/
- /*
- * Format des propriétés:
- *
- * id.property 18114-1811-181-18=/bob/truc/nuiton/Script
- *
- * metadata 18114-1811-181-18.version=1.0 18114-1811-181-18.exention=js
- */
+
}
1
0
r1068 - in trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication: externalize synchro
by mfortun@users.nuiton.org 07 Jul '11
by mfortun@users.nuiton.org 07 Jul '11
07 Jul '11
Author: mfortun
Date: 2011-07-07 16:27:10 +0200 (Thu, 07 Jul 2011)
New Revision: 1068
Url: http://nuiton.org/repositories/revision/wikitty/1068
Log:
* Util Class for wikitty stored as file
* WikittyPubData correctly handled in externalization
Added:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-07 12:30:41 UTC (rev 1067)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-07 14:27:10 UTC (rev 1068)
@@ -4,6 +4,7 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
+import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
@@ -17,8 +18,14 @@
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyServiceFactory;
import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyLabel;
+import org.nuiton.wikitty.entities.WikittyLabelHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubData;
+import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper;
+import org.nuiton.wikitty.publication.synchro.PropertiesExtended;
+import org.nuiton.wikitty.publication.synchro.WikittyFileUtil;
import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
@@ -35,13 +42,17 @@
public static String TEMPORARY_FILE_NAME = "tempBeforeJar";
public static String DEFAULT_JAR_NAME = "pub-externalized";
+ public static String VERSION_SUFFIX = ".version";
+ public static String EXTENSION_SUFFIX = ".extension";
+
/*
* Class don't have to be instantiate
*/
private WikittyPublicationExternalize() {
}
- static public void main(String[] args) throws ArgumentsParserException, IOException {
+ static public void main(String[] args) throws ArgumentsParserException,
+ IOException {
ApplicationConfig appconfig = new ApplicationConfig();
appconfig.parse(args);
@@ -60,8 +71,6 @@
String urlFileSystem = "file:///home/Manou/testWP#wp";
// String urlFileSystem = currentFile.getParent() + "#" + Label;
- System.out.println(urlFileSystem);
-
appconfig.setOption(WikittyConfigOption.WIKITTY_SERVER_URL.getKey(),
urlFileSystem);
@@ -77,34 +86,85 @@
File tempDirectory = new File(currentFile + File.separator
+ TEMPORARY_FILE_NAME);
tempDirectory.mkdir();
-
-
-
+
+ File filePropertiesId = new File(tempDirectory + File.separator
+ + WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE);
+ filePropertiesId.createNewFile();
+ PropertiesExtended idProperties = new PropertiesExtended(
+ filePropertiesId);
+
+ File filePropertiesMeta = new File(tempDirectory + File.separator
+ + WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
+ filePropertiesMeta.createNewFile();
+ PropertiesExtended metaProperties = new PropertiesExtended(
+ filePropertiesMeta);
+
// iterate wikitty
// - write file
// - write property
// - write
for (Wikitty wikit : allWikittyOnFS) {
+ if (!wikit.hasExtension(WikittyLabel.EXT_WIKITTYLABEL)) {
+ // non usable wikitty
+ continue;
+ }
-
-
+ // construct directory with labels
+
+ Set<String> labeles = WikittyLabelHelper.getLabels(wikit);
+ if (labeles.size() == 0) {
+ continue;
+ }
+
+ String label = labeles.toArray()[0].toString();
+
+ WikittyFileUtil.createFilesFromLabelPath(tempDirectory, label);
+
+ // preparation for properties
+ String labelPath = WikittyFileUtil.labelToPath(label);
+ labelPath += File.separator;
+
+ String id = wikit.getId();
+ metaProperties.put(id + VERSION_SUFFIX, wikit.getVersion());
+
+ String extension;
+ File wikittyFile;
+ String name;
+
if (wikit.hasExtension(WikittyPubText.EXT_WIKITTYPUBTEXT)) {
+ name = WikittyPubTextHelper.getName(wikit);
+ idProperties.put(id, labelPath + name);
+ metaProperties.put(id + EXTENSION_SUFFIX,
+ WikittyPubTextHelper.getFileExtension(wikit));
+ }
- } else if (wikit.hasExtension(WikittyPubData.EXT_WIKITTYPUBDATA)) {
+ if (wikit.hasExtension(WikittyPubData.EXT_WIKITTYPUBDATA)) {
+ byte[] content = WikittyPubDataHelper.getContent(wikit);
+ extension = WikittyPubDataHelper.getFileExtension(wikit);
+ name = WikittyPubDataHelper.getName(wikit);
+ // write file on the temporary directory
+ wikittyFile = new File(
+ tempDirectory.getAbsolutePath()+File.separator+
+ labelPath + name + "." + extension);
+ wikittyFile.createNewFile();
+ FileUtil.byteToFile(content, wikittyFile);
+
+ // write properties
+ metaProperties.put(id + EXTENSION_SUFFIX, extension);
+ idProperties.put(id, labelPath + name);
}
}
-
-
-
-
-
-
+
+ metaProperties.store();
+ idProperties.store();
+
// construct jar
- File jarFile = new File(currentFile + File.separator+DEFAULT_JAR_NAME+".jar");
- //JarUtil.compressFiles(jarFile, tempDirectory );
- JarUtil.compressFiles(jarFile, new File("/home/Manou/testWP/wp/") );
-
+ File jarFile = new File(currentFile + File.separator + DEFAULT_JAR_NAME
+ + ".jar");
+ JarUtil.compressFiles(jarFile, tempDirectory);
+ // JarUtil.compressFiles(jarFile, new File("/home/Manou/testWP/wp/") );
+
// delete tempfile
FileUtil.deleteRecursively(tempDirectory);
}
@@ -138,8 +198,4 @@
* metadata 18114-1811-181-18.version=1.0 18114-1811-181-18.exention=js
*/
- public static String getWikittyPubLocalName(Wikitty w) {
- return null;
- }
-
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-07 12:30:41 UTC (rev 1067)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-07 14:27:10 UTC (rev 1068)
@@ -1,5 +1,6 @@
package org.nuiton.wikitty.publication.synchro;
+import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -7,6 +8,11 @@
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.StringUtil;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyUtil;
@@ -33,6 +39,9 @@
public abstract class AbstractWikittyFileService implements WikittyService{
+
+ final static Log log = LogFactory.getLog(AbstractWikittyFileService.class);
+
public AbstractWikittyFileService() {
super();
}
@@ -420,4 +429,5 @@
}
}
+
}
\ No newline at end of file
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java 2011-07-07 14:27:10 UTC (rev 1068)
@@ -0,0 +1,88 @@
+package org.nuiton.wikitty.publication.synchro;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.StringUtil;
+
+public class WikittyFileUtil {
+
+ /**
+ * The file name of the meta property file
+ */
+ static public String WIKITTY_FILE_META_PROPERTIES_FILE = "meta.properties";
+
+ /*
+ * Need a different file for id and meta information about wikittiesFiles
+ * because with this solution we can simply read the ids with props.keySet()
+ */
+ /**
+ * The file Name of the id property file
+ */
+ static public String WIKITTY_ID_PROPERTIES_FILE = "ids.properties";
+
+
+
+ final static Log log = LogFactory.getLog(WikittyFileUtil.class);
+
+ /**
+ * Construct correctly the path from a label
+ *
+ * @param label
+ * the label
+ * @return the correct path
+ */
+ public static String labelToPath(String label) {
+
+ String result = label;
+
+ result = result.replace(".", File.separator);
+
+ // correct the pb with directory name begin by .
+ result = result.replace(File.separator + File.separator, File.separator
+ + ".");
+
+ log.info("Convert label to path: " + label + " path:" + result);
+
+ return result;
+ }
+
+ /**
+ * Creates all the file system require from a label path in the working
+ * directory
+ *
+ * @param label
+ * the path string
+ * @return if all the path was created
+ * @throws IOException
+ */
+ public static boolean createFilesFromLabelPath(File homeFile, String label) throws IOException
+ {
+
+ label = labelToPath(label);
+
+ log.info("Create directory from path:" + label);
+
+ String[] pathElements = StringUtil.split(label, File.separator);
+
+ boolean result = false;
+
+ if (homeFile.exists() && homeFile.isDirectory()) {
+ String path = homeFile.getCanonicalPath();
+ result = true;
+ for (int i = 0; i < pathElements.length; i++) {
+
+ path = path + File.separator + pathElements[i];
+ File temp = new File(path);
+ FileUtil.createDirectoryIfNecessary(temp);
+ result = result && temp.exists();
+ }
+ }
+
+ return result;
+ }
+
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java 2011-07-07 12:30:41 UTC (rev 1067)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java 2011-07-07 14:27:10 UTC (rev 1068)
@@ -566,7 +566,7 @@
PropertiesExtended metaPropertiesExtended = WikittyPublicationFileSystem
.getWikittyPublicationProperties(
currentDir,
- WikittyPublicationFileSystem.WIKITTY_FILE_META_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
String labelCurrent = metaPropertiesExtended
.getProperty(WikittyPublicationFileSystem.META_CURRENT_LABEL);
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-07 12:30:41 UTC (rev 1067)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-07 14:27:10 UTC (rev 1068)
@@ -68,7 +68,9 @@
import org.nuiton.wikitty.search.operators.Restriction;
import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.WikittyListener;
+import org.nuiton.wikitty.publication.synchro.WikittyFileUtil;
+
public class WikittyPublicationFileSystem extends AbstractWikittyFileService {
/** to use log facility, just put in your code: log.info(\"...\"); */
@@ -121,21 +123,8 @@
*/
static public String META_PREFIX_KEY_ID = "id.";
- /**
- * The file name of the meta property file
- */
- static public String WIKITTY_FILE_META_PROPERTIES_FILE = "meta.properties";
- /*
- * Need a different file for id and meta information about wikittiesFiles
- * because with this solution we can simply read the ids with props.keySet()
- */
/**
- * The file Name of the id property file
- */
- static public String WIKITTY_ID_PROPERTIES_FILE = "ids.properties";
-
- /**
* The file name of the wikitty service property
*/
static public String WIKITTY_FILE_SERVICE = "ws.properties";
@@ -410,7 +399,7 @@
}
// create the directories from the label
- boolean pathFilecreated = createFilesFromLabelPath(ourDir);
+ boolean pathFilecreated = WikittyFileUtil.createFilesFromLabelPath(homeFile,ourDir);
if (pathFilecreated) {
// create the path with the label
@@ -478,7 +467,7 @@
// write current label
PropertiesExtended metaProperties = getWikittyPublicationProperties(
wikittyParenFile,
- WIKITTY_FILE_META_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
// update
metaProperties
.setProperty(
@@ -565,7 +554,7 @@
try {
// construct the starts file from the label and the working
// directory
- String labelToDir = this.labelToPath(label);
+ String labelToDir = WikittyFileUtil.labelToPath(label);
File starts = new File(homeFile.getAbsolutePath() + File.separator
+ labelToDir);
@@ -620,7 +609,7 @@
// load properties
PropertiesExtended propsProperties = getWikittyPublicationProperties(
new File(path),
- WikittyPublicationFileSystem.WIKITTY_FILE_META_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
// update remove properties
propsProperties.remove(META_PREFIX_KEY_CHECKSUM + fileName);
@@ -633,7 +622,7 @@
// load properties
PropertiesExtended idProperties = getWikittyPublicationProperties(
new File(path),
- WikittyPublicationFileSystem.WIKITTY_ID_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE);
// update
idProperties.remove(id);
// resave
@@ -665,7 +654,7 @@
try {
// construct properly with the working directory and the label
// the starts directory
- String labelToDir = this.labelToPath(label);
+ String labelToDir = WikittyFileUtil.labelToPath(label);
File starts = new File(homeFile.getAbsolutePath() + File.separator
+ labelToDir);
if (starts.exists()) {
@@ -739,7 +728,7 @@
try {
// construct properly with the working directory and the label
// the starts directory
- String labelToDir = this.labelToPath(label);
+ String labelToDir = WikittyFileUtil.labelToPath(label);
File starts = new File(homeFile.getAbsolutePath() + File.separator
+ labelToDir);
if (starts.exists()) {
@@ -882,7 +871,7 @@
Properties idProps = new Properties();
File idFile = new File(propsDir.getCanonicalPath() + File.separator
- + WikittyPublicationFileSystem.WIKITTY_ID_PROPERTIES_FILE);
+ + WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE);
if (idFile.exists()) {
idProps.load(new FileReader(idFile));
}
@@ -988,7 +977,7 @@
// load properties
File wikittyParentDir = new File(path);
PropertiesExtended props = getWikittyPublicationProperties(
- wikittyParentDir, WIKITTY_FILE_META_PROPERTIES_FILE);
+ wikittyParentDir, WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
// set the current label
WikittyLabelHelper.addLabels(result, props
@@ -1052,9 +1041,9 @@
// create/load property file
PropertiesExtended ids = getWikittyPublicationProperties(starts,
- WIKITTY_ID_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE);
PropertiesExtended meta = getWikittyPublicationProperties(starts,
- WIKITTY_FILE_META_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
// set label
meta.put(META_CURRENT_LABEL, label);
@@ -1087,7 +1076,7 @@
}
// after adding all new file, check for deleted wikitty
ids = getWikittyPublicationProperties(starts,
- WIKITTY_ID_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE);
List<String> filesWikitty = new ArrayList<String>();
filesWikitty.addAll(CollectionUtil.toGenericCollection(ids.values(),
@@ -1100,7 +1089,7 @@
log.info("remove wikitty informations for deleted file");
meta = getWikittyPublicationProperties(starts,
- WIKITTY_FILE_META_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
filesWikitty.removeAll(listChildFileNonDir);
@@ -1144,7 +1133,7 @@
String localMd5 = StringUtil.asHex(byt);
PropertiesExtended meta = getWikittyPublicationProperties(
- child.getParentFile(), WIKITTY_FILE_META_PROPERTIES_FILE);
+ child.getParentFile(),WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
String registeredMD5 = meta.getProperty(META_PREFIX_KEY_CHECKSUM
+ child.getName());
@@ -1193,9 +1182,9 @@
File parent = towrite.getParentFile();
PropertiesExtended id = getWikittyPublicationProperties(parent,
- WIKITTY_ID_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE);
PropertiesExtended meta = getWikittyPublicationProperties(parent,
- WIKITTY_FILE_META_PROPERTIES_FILE);
+ WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
id.put(wikitty.getId(), towrite.getName());
@@ -1221,63 +1210,11 @@
}
- /**
- * Creates all the file system require from a label path in the working
- * directory
- *
- * @param label
- * the path string
- * @return if all the path was created
- * @throws Exception
- */
- protected boolean createFilesFromLabelPath(String label) throws Exception {
- label = labelToPath(label);
- log.info("Create directory from path:" + label);
- String[] pathElements = StringUtil.split(label, File.separator);
- boolean result = false;
-
- if (homeFile.exists() && homeFile.isDirectory()) {
- String path = homeFile.getCanonicalPath();
- result = true;
- for (int i = 0; i < pathElements.length; i++) {
-
- path = path + File.separator + pathElements[i];
- File temp = new File(path);
- FileUtil.createDirectoryIfNecessary(temp);
- result = result && temp.exists();
- }
- }
-
- return result;
- }
-
/**
- * Construct correctly the path from a label
- *
- * @param label
- * the label
- * @return the correct path
- */
- public String labelToPath(String label) {
-
- String result = label;
-
- result = result.replace(".", File.separator);
-
- // correct the pb with directory name begin by .
- result = result.replace(File.separator + File.separator, File.separator
- + ".");
-
- log.info("Convert label to path: " + label + " path:" + result);
-
- return result;
- }
-
- /**
* Use to search and return the home property that containt informations
* about wikitty service use to synchronise a wikitty publication file
* system
1
0
r1067 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 07 Jul '11
by mfortun@users.nuiton.org 07 Jul '11
07 Jul '11
Author: mfortun
Date: 2011-07-07 14:30:41 +0200 (Thu, 07 Jul 2011)
New Revision: 1067
Url: http://nuiton.org/repositories/revision/wikitty/1067
Log:
* JarUtil based on zip util but used to handle jar with manifest
Added:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/JarUtil.java
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/JarUtil.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/JarUtil.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/JarUtil.java 2011-07-07 12:30:41 UTC (rev 1067)
@@ -0,0 +1,584 @@
+package org.nuiton.wikitty.publication.externalize;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.MD5OutputStream;
+import org.nuiton.util.StringUtil;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.jar.JarInputStream;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+
+/**
+ * Opérations sur des fichiers Jar. Compression et décompression avec ou sans
+ * filtres, scan des fichiers créés ou écrasés lors de la décompression...
+ *
+ * Créée à partir de org.nuiton.util.ZipUtil
+ * <p/>
+ *
+ * @author mfortun
+ */
+public class JarUtil {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(JarUtil.class);
+
+ /** Taille du buffer pour les lectures/écritures. */
+ private static final int BUFFER_SIZE = 8 * 1024;
+
+ /** Le séparateur de fichier en local. */
+ private static final String LOCAL_SEP = File.separator;
+
+ private static final String LOCAL_SEP_PATTERN = "\\".equals(LOCAL_SEP) ? LOCAL_SEP
+ + LOCAL_SEP
+ : LOCAL_SEP;
+
+ /** Le séparateur jar. */
+ private static final String JAR_SEP = "/";
+
+ private static final String ZIP_SEP_PATTERN = "/";
+
+ /** Accept all file pattern. */
+ protected static FileFilter ALL_FILE_FILTER = new FileFilter() {
+ public boolean accept(File pathname) {
+ return true;
+ }
+ };
+
+ /**
+ * Uncompress jarped file in targetDir.
+ *
+ * @param file
+ * the jar source file
+ * @param targetDir
+ * the destination directory
+ * @return return last entry name
+ * @throws IOException
+ * if any problem while uncompressing
+ */
+ public static String uncompress(File file, File targetDir)
+ throws IOException {
+ String result;
+ result = uncompressAndRename(file, targetDir, null, null);
+ return result;
+ }
+
+ /**
+ * Uncompress jarped file in targetDir, and rename uncompressed file if
+ * necessary. If renameFrom or renameTo is null no renaming is done
+ * <p/>
+ * file in jar use / to separate directory and not begin with / each
+ * directory ended with /
+ *
+ * @param file
+ * the jar source file
+ * @param targetDir
+ * the destination directory
+ * @param renameFrom
+ * pattern to permit rename file before uncompress it
+ * @param renameTo
+ * new name for file if renameFrom is applicable to it you can
+ * use $1, $2, ... if you have '(' ')' in renameFrom
+ * @return return last entry name
+ * @throws IOException
+ * if any problem while uncompressing
+ */
+ public static String uncompressAndRename(File file, File targetDir,
+ String renameFrom, String renameTo) throws IOException {
+ String result = "";
+ JarInputStream in = new JarInputStream(new FileInputStream(file));
+ JarEntry entry;
+ while ((entry = in.getNextJarEntry()) != null) {
+ String name = entry.getName();
+ if (renameFrom != null && renameTo != null) {
+ name = name.replaceAll(renameFrom, renameTo);
+ if (log.isDebugEnabled()) {
+ log.debug("rename " + entry.getName() + " -> " + name);
+ }
+ }
+ result = name;
+ File target = new File(targetDir, name);
+ if (entry.isDirectory()) {
+ target.mkdirs();
+ } else {
+ target.getParentFile().mkdirs();
+ OutputStream out = new BufferedOutputStream(
+ new FileOutputStream(target));
+ try {
+ byte[] buffer = new byte[BUFFER_SIZE];
+ int len;
+ while ((len = in.read(buffer, 0, BUFFER_SIZE)) != -1) {
+ out.write(buffer, 0, len);
+ }
+ } finally {
+ out.close();
+ }
+ }
+ }
+ in.close();
+ return result;
+ }
+
+ public static void compressFiles(File jarFile, File fileOrDirectory)
+ throws IOException {
+
+ FileFilter filter = ALL_FILE_FILTER;
+
+ List<File> files = new ArrayList<File>();
+ if (fileOrDirectory.isDirectory()) {
+ files = FileUtil.getFilteredElements(fileOrDirectory, filter, true);
+ } else if (filter.accept(fileOrDirectory)) {
+ files.add(fileOrDirectory);
+ }
+
+ compressFiles(jarFile, fileOrDirectory, null, files, false);
+
+ }
+
+ /**
+ * Compress 'includes' files in jarFile. If file in includes is directory
+ * only the directory is put in jarFile, not the file contained in directory
+ *
+ * @param jarFile
+ * the destination jar file
+ * @param root
+ * for all file in includes that is in this directory, then we
+ * remove this directory in jar entry name (aka -C for tar), can
+ * be null;
+ * @param includes
+ * the files to include in jar
+ * @throws IOException
+ * if any problem while compressing
+ */
+ public static void compressFiles(File jarFile, File root,
+ Collection<File> includes) throws IOException {
+ compressFiles(jarFile, root, null, includes, false);
+ }
+
+ /**
+ * Compress 'includes' files in jarFile. If file in includes is directory
+ * only the directory is put in jarFile, not the file contained in directory
+ *
+ * @param jarFile
+ * the destination jar file
+ * @param root
+ * for all file in includes that is in this directory, then we
+ * remove this directory in jar entry name (aka -C for tar), can
+ * be null;
+ * @param includes
+ * the files to include in jar
+ * @param createMD5
+ * also create a MD5 file (jar name + .md5). MD5 file is created
+ * after jar.
+ * @throws IOException
+ * if any problem while compressing
+ */
+ public static void compressFiles(File jarFile, File root, Manifest mf,
+ Collection<File> includes, boolean createMD5) throws IOException {
+
+ if (mf == null) {
+ mf = new Manifest();
+ }
+
+ OutputStream oStream = new FileOutputStream(jarFile);
+
+ // if md5 creation flag
+ if (createMD5) {
+ oStream = new MD5OutputStream(oStream);
+ }
+ try {
+ JarOutputStream jarOStream = new JarOutputStream(oStream, mf);
+
+ for (File file : includes) {
+ String entryName = toJarEntryName(root, file);
+
+ // Création d'une nouvelle entrée dans le jar
+ JarEntry entry = new JarEntry(entryName);
+ entry.setTime(file.lastModified());
+ jarOStream.putNextEntry(entry);
+
+ if (file.isFile() && file.canRead()) {
+ byte[] readBuffer = new byte[BUFFER_SIZE];
+ int bytesIn;
+ BufferedInputStream bis = new BufferedInputStream(
+ new FileInputStream(file), BUFFER_SIZE);
+ try {
+ while ((bytesIn = bis.read(readBuffer, 0, BUFFER_SIZE)) != -1) {
+ jarOStream.write(readBuffer, 0, bytesIn);
+ }
+ } finally {
+ bis.close();
+ }
+ }
+ jarOStream.closeEntry();
+ }
+ jarOStream.close();
+
+ // if md5 creation flag
+ if (createMD5) {
+ String md5hash = StringUtil.asHex(((MD5OutputStream) oStream)
+ .hash());
+ File md5File = new File(jarFile.getAbsoluteFile() + ".md5");
+ FileUtil.writeString(md5File, md5hash);
+ }
+ } finally {
+ oStream.close();
+ }
+ }
+
+ /**
+ * If fileOrDirectory is directory Compress recursively all file in this
+ * directory, else if is just file compress one file.
+ * <p/>
+ * Entry result name in jar start at fileOrDirectory. example: if we
+ * compress /etc/apache, entry will be apache/http.conf, ...
+ *
+ * @param jarFile
+ * the target jar file
+ * @param fileOrDirectory
+ * the file or directory to compress
+ * @throws IOException
+ * if any problem while compressing
+ */
+ public static void compress(File jarFile, File fileOrDirectory)
+ throws IOException {
+ compress(jarFile, fileOrDirectory, null, null, false);
+ }
+
+ public static void compress(File jarFile, File fileOrDirectory, Manifest mf)
+ throws IOException {
+ compress(jarFile, fileOrDirectory, mf, null, false);
+ }
+
+ /**
+ * If fileOrDirectory is directory Compress recursively all file in this
+ * directory, else if is just file compress one file.
+ * <p/>
+ * Entry result name in jar start at fileOrDirectory. example: if we
+ * compress /etc/apache, entry will be apache/http.conf, ...
+ *
+ * @param jarFile
+ * the target jar file
+ * @param fileOrDirectory
+ * the file or directory to compress
+ * @param filter
+ * used to accept file, if null, all file is accepted
+ * @throws IOException
+ * if any problem while compressing
+ */
+ public static void compress(File jarFile, File fileOrDirectory,
+ FileFilter filter) throws IOException {
+ compress(jarFile, fileOrDirectory, null, filter, false);
+ }
+
+ /**
+ * If fileOrDirectory is directory Compress recursively all file in this
+ * directory, else if is just file compress one file.
+ * <p/>
+ * Entry result name in jar start at fileOrDirectory. example: if we
+ * compress /etc/apache, entry will be apache/http.conf, ...
+ *
+ * @param jarFile
+ * the target jar file
+ * @param fileOrDirectory
+ * the file or directory to compress
+ * @param filter
+ * used to accept file, if null, all file is accepted
+ * @param createMD5
+ * also create a MD5 file (jar name + .md5). MD5 file is created
+ * after jar.
+ * @throws IOException
+ * if any problem while compressing
+ */
+ public static void compress(File jarFile, File fileOrDirectory,
+ Manifest mf, FileFilter filter, boolean createMD5)
+ throws IOException {
+
+ if (filter == null) {
+ filter = ALL_FILE_FILTER;
+ }
+ List<File> files = new ArrayList<File>();
+ if (fileOrDirectory.isDirectory()) {
+ files = FileUtil.getFilteredElements(fileOrDirectory, filter, true);
+ } else if (filter.accept(fileOrDirectory)) {
+ files.add(fileOrDirectory);
+ }
+
+ compressFiles(jarFile, fileOrDirectory.getParentFile(), mf, files,
+ createMD5);
+ }
+
+ /**
+ * <li>supprime le root du fichier <li>Converti les '\' en '/' car les jar
+ * entry utilise des '/' <li>ajoute un '/' a la fin pour les repertoires <li>
+ * supprime le premier '/' si la chaine commence par un '/'
+ *
+ * @param root
+ * the root directory
+ * @param file
+ * the file to treate
+ * @return the jar entry name corresponding to the given <code>file</code>
+ * from <code>root</code> dir.
+ */
+ private static String toJarEntryName(File root, File file) {
+ String result = file.getPath();
+
+ if (root != null) {
+ String rootPath = root.getPath();
+ if (result.startsWith(rootPath)) {
+ result = result.substring(rootPath.length());
+ }
+ }
+
+ result = result.replace('\\', '/');
+ if (file.isDirectory()) {
+ result += '/';
+ }
+ while (result.startsWith("/")) {
+ result = result.substring(1);
+ }
+ return result;
+ }
+
+ /**
+ * Scan a jarFile, and fill two lists of relative paths corresponding of jar
+ * entries. First list contains all entries to be added while a uncompress
+ * operation on the destination directory </code>targetDir</code>. Second
+ * list contains all entries to be overwritten while a uncompress operation
+ * on the destination directory <code>targetDir</code>. <br>
+ * If <code>targetDir</code> is <code>null</code> we don't fill
+ * <cide>existingFiles<code/> list.
+ *
+ * @param jarFile
+ * location of the jar to scanJar
+ * @param targetDir
+ * location of destination for a uncompress operation. If
+ * <code>null</code> we don't test to find overwritten files.
+ * @param newFiles
+ * list of files to be added while a uncompress
+ * @param existingFiles
+ * list of files to be overwritten while a uncompress if the
+ * <code>targetDir</code>, (only use if <code>targetDir</code> is
+ * not <code>null</code>)
+ * @param excludeFilter
+ * used to exclude some files
+ * @param renameFrom
+ * {@link #uncompressAndRename(File, File, String, String)}
+ * @param renameTo
+ * {@link #uncompressAndRename(File, File, String, String)}
+ * @throws IOException
+ * if any exception while dealing with jarfile
+ */
+ public static void scan(File jarFile, File targetDir,
+ List<String> newFiles, List<String> existingFiles,
+ FileFilter excludeFilter, String renameFrom, String renameTo)
+ throws IOException {
+ JarFile jar = null;
+ try {
+ jar = new JarFile(jarFile);
+ boolean findExisting = targetDir != null && targetDir.exists();
+ boolean filter = findExisting && excludeFilter != null;
+ boolean rename = renameFrom != null && renameTo != null;
+ Enumeration<? extends JarEntry> entries = jar.entries();
+ while (entries.hasMoreElements()) {
+ String entryName = entries.nextElement().getName();
+ if (rename) {
+ entryName = entryName.replaceAll(renameFrom, renameTo);
+ }
+ String name = convertToLocalEntryName(entryName);
+ if (findExisting || filter) {
+ File file = new File(targetDir, name);
+ if (filter && excludeFilter.accept(file))
+ continue;
+ if (file.exists()) {
+ existingFiles.add(name);
+ continue;
+ }
+ }
+ newFiles.add(name);
+ }
+ } finally {
+ if (jar != null) {
+ jar.close();
+ }
+ }
+ }
+
+ @SuppressWarnings({ "unchecked" })
+ public static List<String>[] scanAndExplodeJar(File source, File root,
+ FileFilter excludeFilter) throws IOException {
+
+ List<String> overwrittenFiles = new ArrayList<String>();
+ List<String> newFiles = new ArrayList<String>();
+
+ // obtain list of relative paths (to add or overwrite)
+ scan(source, root, newFiles, overwrittenFiles, excludeFilter, null,
+ null);
+
+ return new List[] { newFiles, overwrittenFiles };
+ }
+
+ /**
+ * uncompress jarped file in targetDir.
+ * <p/>
+ * If <code>toTreate</code> if not null nor empty, we use it to filter
+ * entries to uncompress : it contains a list of relative local path of
+ * files to uncompress. Otherwise just delegate to
+ * {@link JarUtil#uncompress(File,File)}.
+ *
+ * @param file
+ * location of jar file
+ * @param targetDir
+ * destination directory
+ * @param toTreate
+ * list of relative local path of entries to treate
+ * @param renameFrom
+ * {@link #uncompressAndRename(File, File, String, String)}
+ * @param renameTo
+ * {@link #uncompressAndRename(File, File, String, String)}
+ * @return return last entry name
+ * @throws IOException
+ * if nay exception while operation
+ */
+ public static String uncompress(File file, File targetDir,
+ List<String> toTreate, String renameFrom, String renameTo)
+ throws IOException {
+ if (toTreate == null || toTreate.isEmpty()) {
+ return uncompressAndRename(file, targetDir, renameFrom, renameTo);
+ }
+
+ boolean rename = renameFrom != null && renameTo != null;
+
+ String result = "";
+ JarEntry entry;
+ JarInputStream in = new JarInputStream(new FileInputStream(file));
+
+ try {
+ while ((entry = in.getNextJarEntry()) != null) {
+ String name = entry.getName();
+ if (rename) {
+ result = convertToLocalEntryName(name.replaceAll(
+ renameFrom, renameTo));
+ } else {
+ result = convertToLocalEntryName(name);
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("open [" + name + "] : " + result);
+ }
+ if (!toTreate.contains(result)) {
+ continue;
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("copy [" + name + "] : " + result);
+ }
+ File target = new File(targetDir, result);
+ if (entry.isDirectory()) {
+ target.mkdirs();
+ } else {
+ target.getParentFile().mkdirs();
+ OutputStream out = new BufferedOutputStream(
+ new FileOutputStream(target));
+ try {
+ byte[] buffer = new byte[BUFFER_SIZE];
+ int len;
+ while ((len = in.read(buffer, 0, BUFFER_SIZE)) != -1) {
+ out.write(buffer, 0, len);
+ }
+ } finally {
+ out.close();
+ }
+ }
+ }
+ } finally {
+ in.close();
+ }
+ return result;
+ }
+
+ /**
+ * Unjar compressed archive and keep non excluded patterns.
+ *
+ * @param file
+ * archive file
+ * @param targetDir
+ * destination file
+ * @param excludes
+ * excludes pattern (pattern must match complete entry name
+ * including root folder)
+ * @throws IOException
+ */
+ public static void uncompressFiltred(File file, File targetDir,
+ String... excludes) throws IOException {
+
+ JarFile jarFile = new JarFile(file);
+
+ Enumeration<? extends JarEntry> entries = jarFile.entries();
+
+ while (entries.hasMoreElements()) {
+ JarEntry entry = entries.nextElement();
+
+ String name = entry.getName();
+ // add continue to break loop
+ boolean excludeEntry = false;
+ if (excludes != null) {
+ for (String exclude : excludes) {
+ if (name.matches(exclude)) {
+ excludeEntry = true;
+ }
+ }
+ }
+
+ if (!excludeEntry) {
+ File target = new File(targetDir, name);
+ if (entry.isDirectory()) {
+ target.mkdirs();
+ } else {
+ // get inputstream only here
+ target.getParentFile().mkdirs();
+ InputStream in = jarFile.getInputStream(entry);
+ try {
+ OutputStream out = new BufferedOutputStream(
+ new FileOutputStream(target));
+ try {
+ byte[] buffer = new byte[8 * 1024];
+ int len;
+
+ while ((len = in.read(buffer, 0, 8 * 1024)) != -1) {
+ out.write(buffer, 0, len);
+ }
+ } finally {
+ out.close();
+ }
+ } finally {
+ in.close();
+ }
+ }
+ }
+ }
+ }
+
+ protected static String convertToLocalEntryName(String txt) {
+ String s = txt.replaceAll(ZIP_SEP_PATTERN, LOCAL_SEP_PATTERN);
+ if (s.endsWith(JAR_SEP)) {
+ s = s.substring(0, s.length() - 1);
+ }
+ return s;
+ }
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/JarUtil.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-07 09:04:00 UTC (rev 1066)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-07 12:30:41 UTC (rev 1067)
@@ -1,12 +1,27 @@
package org.nuiton.wikitty.publication.externalize;
import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
import org.nuiton.wikitty.WikittyConfigOption;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyServiceFactory;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.publication.entities.WikittyPubData;
+import org.nuiton.wikitty.publication.entities.WikittyPubText;
import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem;
+import org.nuiton.wikitty.search.Criteria;
+import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Search;
/**
@@ -17,57 +32,81 @@
*/
public class WikittyPublicationExternalize {
+ public static String TEMPORARY_FILE_NAME = "tempBeforeJar";
+ public static String DEFAULT_JAR_NAME = "pub-externalized";
+
/*
* Class don't have to be instantiate
*/
private WikittyPublicationExternalize() {
-
}
- static public void main(String[] args) throws ArgumentsParserException {
+ static public void main(String[] args) throws ArgumentsParserException, IOException {
ApplicationConfig appconfig = new ApplicationConfig();
-
-
-
appconfig.parse(args);
+ // Set the correct service use to parse local file
+ appconfig.setOption(
+ WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS.getKey(),
+ WikittyPublicationFileSystem.class.getName());
- appconfig
- .setOption(
- WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS
- .getKey(),
- WikittyPublicationFileSystem.class.getName());
-
+ // construct the url for local repo
File currentFile = new File(".");
- currentFile = new File(currentFile.getAbsolutePath()).getParentFile();
-
+ // currentFile = new
+ // File(currentFile.getAbsolutePath()).getParentFile();
+ currentFile = new File("/home/Manou/testWP");
String Label = currentFile.getName();
- String urlFileSystem = "file:///home/Manou/testWP#wp";
- //currentFile.getParent() + "#" + Label;
+ String urlFileSystem = "file:///home/Manou/testWP#wp";
+ // String urlFileSystem = currentFile.getParent() + "#" + Label;
System.out.println(urlFileSystem);
-
-
appconfig.setOption(WikittyConfigOption.WIKITTY_SERVER_URL.getKey(),
urlFileSystem);
-
-
-
WikittyProxy proxy = new WikittyProxy(
WikittyServiceFactory.buildWikittyService(appconfig));
+ // Found all wikity on the file System
+ Criteria findAllCrit = Search.query().keyword("*").criteria();
+ PagedResult<Wikitty> allWikittyOnFS = proxy
+ .findAllByCriteria(findAllCrit);
+
+ // make tempfile
+ File tempDirectory = new File(currentFile + File.separator
+ + TEMPORARY_FILE_NAME);
+ tempDirectory.mkdir();
+
+
+ // iterate wikitty
+ // - write file
+ // - write property
+ // - write
+ for (Wikitty wikit : allWikittyOnFS) {
+
+
+ if (wikit.hasExtension(WikittyPubText.EXT_WIKITTYPUBTEXT)) {
+
+ } else if (wikit.hasExtension(WikittyPubData.EXT_WIKITTYPUBDATA)) {
+
+ }
+ }
- System.out.println(proxy.findAllByCriteria(Search.query().keyword("*").criteria()).size());
+ // construct jar
+ File jarFile = new File(currentFile + File.separator+DEFAULT_JAR_NAME+".jar");
+ //JarUtil.compressFiles(jarFile, tempDirectory );
+ JarUtil.compressFiles(jarFile, new File("/home/Manou/testWP/wp/") );
+
+ // delete tempfile
+ FileUtil.deleteRecursively(tempDirectory);
}
/*
@@ -90,21 +129,17 @@
* Une fois tout les wikitty traité on va packager le dossier tempJar en jar
* et on va supprimer le dossier tempJar
*/
-
-
-
+
/*
* Format des propriétés:
*
- * id.property
- * 18114-1811-181-18=/bob/truc/nuiton/Script
+ * id.property 18114-1811-181-18=/bob/truc/nuiton/Script
*
- * metadata
- * 18114-1811-181-18.version=1.0
- * 18114-1811-181-18.exention=js
+ * metadata 18114-1811-181-18.version=1.0 18114-1811-181-18.exention=js
*/
+
+ public static String getWikittyPubLocalName(Wikitty w) {
+ return null;
+ }
-
-
-
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-07 09:04:00 UTC (rev 1066)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-07 12:30:41 UTC (rev 1067)
@@ -2,10 +2,9 @@
import java.util.Collection;
import java.util.List;
-
-import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
+import org.nuiton.wikitty.publication.synchro.AbstractWikittyFileService;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.TreeNodeResult;
@@ -18,8 +17,7 @@
* @author mfortun
*
*/
-public class WikittyServiceJarLoader implements WikittyService {
-
+public class WikittyServiceJarLoader extends AbstractWikittyFileService {
/*
1
0