+++ /dev/null
-package org.argeo.app.odk;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Map;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.io.IOUtils;
-import org.argeo.util.DigestUtils;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-
-/** {@link OdkForm} implementation based on an OSGi {@link Bundle} resource. */
-@Deprecated
-public class BundleResourceOdkForm implements OdkForm {
- private String formId;
- private String name;
- private String version;
- private String description;
- private String hash;
- private String fileName;
-
- private byte[] data;
-
- public void init(Map<String, String> properties, BundleContext bundleContext) throws IOException {
- String location = properties.get("location");
- fileName = FilenameUtils.getName(location);
- URL url = bundleContext.getBundle().getResource(location);
- data = IOUtils.toByteArray(url.openStream());
- hash = "md5:" + DigestUtils.digest(DigestUtils.MD5, data);
-
- // TODO get it from the XML
- formId = properties.get("formId");
- version = properties.get("version");
-
- name = properties.get("name");
- description = properties.get("description");
- }
-
- @Override
- public String getFormId() {
- return formId;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public String getVersion() {
- return version;
- }
-
- @Override
- public String getDescription() {
- return description;
- }
-
- @Override
- public String getHash(String hashType) {
- return hash;
- }
-
- @Override
- public String getFileName() {
- return fileName;
- }
-
- @Override
- public InputStream openStream() {
- return new ByteArrayInputStream(data);
- }
-
- @Override
- public int hashCode() {
- assert formId != null;
- assert version != null;
- return formId.hashCode() + version.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- assert formId != null;
- assert version != null;
- if (!(obj instanceof OdkForm))
- return false;
- OdkForm other = (OdkForm) obj;
- assert other.getFormId() != null;
- assert other.getVersion() != null;
-
- return other.getFormId().equals(formId) && other.getVersion().equals(version);
- }
-
- @Override
- public String toString() {
- return "ODK Form " + formId + ", v" + version;
- }
-
-}
+++ /dev/null
-package org.argeo.app.odk;
-
-import java.io.InputStream;
-
-/** Abstraction of a single ODK form. */
-@Deprecated
-public interface OdkForm {
- String getFormId();
-
- String getName();
-
- String getVersion();
-
- String getDescription();
-
- String getHash(String hashType);
-
- String getFileName();
-
- InputStream openStream();
-}
private static final long serialVersionUID = 2706191315048423321L;
private final static CmsLog log = CmsLog.getLog(OdkFormListServlet.class);
-// private Set<OdkForm> odkForms = Collections.synchronizedSet(new HashSet<>());
-
-// private DateTimeFormatter versionFormatter = DateTimeFormatter.ofPattern("YYYY-MM-dd-HHmm")
-// .withZone(ZoneId.from(ZoneOffset.UTC));
-
private Repository repository;
@Override
Session session = RemoteAuthUtils.doAs(() -> Jcr.login(repository, CmsConstants.SYS_WORKSPACE),
new ServletHttpRequest(req));
-// session = NodeUtils.openDataAdminSession(repository, NodeConstants.SYS_WORKSPACE);
Writer writer = resp.getWriter();
writer.append("<?xml version='1.0' encoding='UTF-8' ?>");
writer.append("<xforms xmlns=\"http://openrosa.org/xforms/xformsList\">");
-// boolean oldApproach = false;
-// if (!oldApproach) {
try {
Query query;
if (pathInfo == null) {
-// query = session.getWorkspace().getQueryManager()
-// .createQuery("SELECT * FROM [nt:unstructured]", Query.JCR_SQL2);
query = session.getWorkspace().getQueryManager()
.createQuery("SELECT * FROM [" + OrxListName.xform.get() + "]", Query.JCR_SQL2);
} else {
QueryResult queryResult = query.execute();
NodeIterator nit = queryResult.getNodes();
-// log.debug(session.getUserID());
-// log.debug(session.getWorkspace().getName());
-// NodeIterator nit = session.getRootNode().getNodes();
-// while (nit.hasNext()) {
-// log.debug(nit.nextNode());
-// }
while (nit.hasNext()) {
StringBuilder sb = new StringBuilder();
Node node = nit.nextNode();
} finally {
Jcr.logout(session);
}
-
-// } else {
-// for (OdkForm form : odkForms) {
-// StringBuilder sb = new StringBuilder();
-// sb.append("<xform>");
-// sb.append("<formID>" + form.getFormId() + "</formID>");
-// sb.append("<name>" + form.getName() + "</name>");
-// sb.append("<version>" + form.getVersion() + "</version>");
-// sb.append("<hash>" + form.getHash(null) + "</hash>");
-// sb.append("<descriptionText>" + form.getDescription() + "</descriptionText>");
-// sb.append("<downloadUrl>" + protocol + "://" + serverName
-// + (serverPort == 80 || serverPort == 443 ? "" : ":" + serverPort) + "/api/odk/form/"
-// + form.getFileName() + "</downloadUrl>");
-// sb.append("</xform>");
-// String str = sb.toString();
-// if (log.isDebugEnabled())
-// log.debug(str);
-// writer.append(str);
-// }
-// }
writer.append("</xforms>");
}
-// public void addForm(OdkForm odkForm) {
-// odkForms.add(odkForm);
-// }
-//
-// public void removeForm(OdkForm odkForm) {
-// odkForms.remove(odkForm);
-// }
-
public void setRepository(Repository repository) {
this.repository = repository;
}
private static final long serialVersionUID = 7838305967987687370L;
private Repository repository;
-// private Map<String, OdkForm> odkForms = Collections.synchronizedMap(new HashMap<>());
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if (pathInfo.startsWith("//"))
pathInfo = pathInfo.substring(1);
-// boolean oldApproach = false;
try {
-// if (!oldApproach) {
String path = URLDecoder.decode(pathInfo, StandardCharsets.UTF_8);
session.exportDocumentView(path + "/" + OdkNames.H_HTML, resp.getOutputStream(), true, false);
-// } else {
-//
-// String fileName = FilenameUtils.getName(pathInfo);
-// OdkForm form = odkForms.get(fileName);
-// if (form == null)
-// throw new IllegalArgumentException("No form named " + fileName + " was found");
-//
-// byte[] buffer = new byte[1024];
-// try (InputStream in = form.openStream(); OutputStream out = resp.getOutputStream();) {
-// int bytesRead;
-// while ((bytesRead = in.read(buffer)) != -1)
-// out.write(buffer, 0, bytesRead);
-// }
-// }
} catch (RepositoryException e) {
e.printStackTrace();
// TODO error message
}
}
-// public void addForm(OdkForm odkForm) {
-// odkForms.put(odkForm.getFileName(), odkForm);
-// }
-//
-// public void removeForm(OdkForm odkForm) {
-// odkForms.remove(odkForm.getFileName());
-// }
-
public void setRepository(Repository repository) {
this.repository = repository;
}
MessageDigest messageDigest = MessageDigest.getInstance(DigestUtils.MD5);
// TODO cache a temp file ?
- try (DigestOutputStream out = new DigestOutputStream(new NullOutputStream(),
+ try (DigestOutputStream out = new DigestOutputStream(NullOutputStream.NULL_OUTPUT_STREAM,
messageDigest)) {
writeMediaFile(out, target, mimeType, charset);
writer.append("<hash>");
writer.append("md5sum:" + DigestUtils.toHexString(out.getMessageDigest().digest()));
writer.append("</hash>");
}
-
-// try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
-// session.exportDocumentView(target.getPath(), out, true, false);
-// String fileCsum = DigestUtils.digest(DigestUtils.MD5, out.toByteArray());
-// writer.append("<hash>");
-// writer.append("md5sum:" + fileCsum);
-// writer.append("</hash>");
-// }
writer.append("<downloadUrl>" + protocol + "://" + serverName
+ (serverPort == 80 || serverPort == 443 ? "" : ":" + serverPort)
+ "/api/odk/formManifest" + file.getPath() + "</downloadUrl>");
Node target = node.getProperty(Property.JCR_ID).getNode();
writeMediaFile(resp.getOutputStream(), target, mimeType, charset);
-// try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
-// session.exportDocumentView(target.getPath(), out, true, false);
-// System.out.println(new String(out.toByteArray(), StandardCharsets.UTF_8));
-// resp.getOutputStream().write(out.toByteArray());
-// }
} else {
throw new IllegalArgumentException("Unsupported node " + node);
}
Session session = RemoteAuthUtils.doAs(() -> Jcr.login(repository, null), request);
try {
-// Node submissions = JcrUtils.mkdirs(session,
-// "/" + EntityType.form.get() + "/" + EntityNames.SUBMISSIONS_BASE);
CmsSession cmsSession = RemoteAuthUtils.getCmsSession(request);
-// ClassLoader currentContextCl = Thread.currentThread().getContextClassLoader();
-// Thread.currentThread().setContextClassLoader(CmsJcrUtils.class.getClassLoader());
Session adminSession = null;
try {
// TODO centralise at a deeper level
SuiteUtils.getOrCreateCmsSessionNode(adminSession, cmsSession);
} finally {
Jcr.logout(adminSession);
-// Thread.currentThread().setContextClassLoader(currentContextCl);
}
Node cmsSessionNode = SuiteUtils.getCmsSessionNode(session, cmsSession);