use of eu.esdihumboldt.hale.server.model.Template in project hale by halestudio.
the class TemplateUploadForm method onUploadSuccess.
/**
* Called after a successful upload.
*
* @param form the form
* @param templateId the template identifier
* @param projectInfo the project info
* @param updateInfo if for an updated template, the template information
* should be updated from the project
*/
protected void onUploadSuccess(Form<?> form, String templateId, ProjectInfo projectInfo, boolean updateInfo) {
boolean newTemplate = TemplateUploadForm.this.templateId == null;
OrientGraph graph = DatabaseHelper.getGraph();
try {
Template template = Template.getByTemplateId(graph, templateId);
if (template == null) {
form.error("Template could not be created");
return;
}
if (newTemplate) {
// created template was a new template
// associate user as owner to template
String login = UserUtil.getLogin();
if (login != null) {
User user = User.getByLogin(graph, login);
graph.addEdge(null, template.getV(), user.getV(), "owner");
}
// forward to page to fill in template information
setResponsePage(new NewTemplatePage(templateId));
} else {
// created template already existed
// set last updated
template.setLastUpdate(new Date());
// update template info from project info
if (updateInfo) {
template.setName(projectInfo.getName());
template.setAuthor(projectInfo.getAuthor());
template.setDescription(projectInfo.getDescription());
}
// forward to template page
setResponsePage(TemplatePage.class, new PageParameters().set(0, templateId));
}
} catch (NonUniqueResultException e) {
form.error("Internal error");
log.error("Duplicate template or user");
} finally {
graph.shutdown();
}
}
use of eu.esdihumboldt.hale.server.model.Template in project hale by halestudio.
the class EditTemplatePage method addControls.
@Override
protected void addControls() {
StringValue idParam = getPageParameters().get(0);
if (!idParam.isNull() && !idParam.isEmpty()) {
String templateId = idParam.toString();
OrientGraph graph = DatabaseHelper.getGraph();
try {
Template template = null;
try {
template = Template.getByTemplateId(graph, templateId);
} catch (NonUniqueResultException e) {
log.error("Duplicate template representation: " + templateId, e);
}
if (template != null) {
// get associated user
Vertex v = template.getV();
Iterator<Vertex> owners = v.getVertices(Direction.OUT, "owner").iterator();
if (// user is admin
UserUtil.isAdmin() || // or user is owner
(owners.hasNext() && UserUtil.getLogin().equals(new User(owners.next(), graph).getLogin()))) {
add(new TemplateForm("edit-form", false, templateId));
} else {
throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_FORBIDDEN);
}
} else {
throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND, "Template not found.");
}
} finally {
graph.shutdown();
}
} else
throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_BAD_REQUEST, "Template identifier must be specified.");
}
use of eu.esdihumboldt.hale.server.model.Template in project hale by halestudio.
the class TemplateScavengerImpl method triggerScan.
@Override
public synchronized void triggerScan() {
// provide a graph for use in updateResource and onRemove
graph.set(DatabaseHelper.getGraph());
try {
super.triggerScan();
/*
* Check if there are templates in the database that no longer have
* an associated template in the file system.
*/
for (Template template : Template.findAll(graph.get())) {
if (template.isValid() && getReference(template.getTemplateId()) == null) {
// invalidate template w/ missing resource
template.setValid(false);
log.warn("Invalidated template {}, the resource folder is missing", template.getTemplateId());
}
}
} finally {
graph.get().shutdown();
graph.set(null);
}
}
use of eu.esdihumboldt.hale.server.model.Template in project hale by halestudio.
the class TemplateScavengerImpl method onAdd.
@Override
protected void onAdd(TemplateProject reference, String resourceId) {
reference.update(null);
Template template;
try {
// get existing representation in database
template = Template.getByTemplateId(graph.get(), resourceId);
} catch (NonUniqueResultException e) {
log.error("Duplicate template representation in database");
return;
}
if (template != null) {
// update valid status
boolean valid = reference.isValid();
template.setValid(valid);
log.info("Updating template {} - {}", resourceId, (valid) ? ("valid") : ("invalid"));
} else {
/*
* Only create a new database reference if the project actually is
* valid
*/
if (reference.isValid()) {
ProjectInfo info = reference.getProjectInfo();
// create new template representation in DB
template = Template.create(graph.get());
// populated with resource ID and values from project
template.setTemplateId(resourceId);
template.setName(info.getName());
template.setAuthor(info.getAuthor());
template.setDescription(info.getDescription());
template.setValid(true);
Date now = new Date();
template.setCreated(now);
template.setLastUpdate(now);
log.info("Creating database representation for template {}", resourceId);
}
}
}
use of eu.esdihumboldt.hale.server.model.Template in project hale by halestudio.
the class TemplateScavengerImpl method onRemove.
@Override
protected void onRemove(TemplateProject reference, String resourceId) {
// invalidate database reference (if it exists)
OrientGraph g = graph.get();
boolean cleanUp = g == null;
if (g == null) {
g = DatabaseHelper.getGraph();
}
try {
Template template = Template.getByTemplateId(g, resourceId);
if (template != null) {
template.setValid(false);
log.info("Template {} was removed - updating status to invalid", resourceId);
}
} catch (NonUniqueResultException e) {
log.error("Duplicate template representation in database");
} finally {
if (cleanUp) {
g.shutdown();
}
}
}
Aggregations