Skip to content

Commit

Permalink
#8600 add api for getting templates
Browse files Browse the repository at this point in the history
  • Loading branch information
sekmiller committed May 16, 2022
1 parent 9bd9e09 commit caacaab
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 1 deletion.
4 changes: 3 additions & 1 deletion scripts/issues/8600/delete_orphan_templates_8600.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ pg_host=localhost
pg_port=5432
pg_user=dvnapp
pg_db=dvndb
#edit this line with the server for the api call to delete orphan templates
SERVER=http://localhost:8080/api
# you can leave the password blank, if Postgres is configured
# to accept connections without auth:
pg_pass=
Expand Down Expand Up @@ -55,7 +57,7 @@ ${PSQL_EXEC} -h ${pg_host} -U ${pg_user} -d ${pg_db} -t -c "${PG_QUERY_1}" \
then
echo "nothing to do here"
else
curl -X DELETE http://localhost:8080/api/admin/template/${id}
curl -X DELETE $SERVER/admin/template/${id}
echo "template ${id} deleted "
fi

Expand Down
16 changes: 16 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/TemplateServiceBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,22 @@ public Template findByDeafultTemplateOwnerId(Long ownerId) {
query.setParameter("ownerId", ownerId);
return query.getSingleResult();
}

public List<Template> findByOwnerId(Long ownerId) {
TypedQuery<Template> query = em.createQuery("select object(o) from Template as o where o.dataverse.id =:ownerId order by o.name", Template.class);
query.setParameter("ownerId", ownerId);
return query.getResultList();
}

public List<Template> findAll() {
TypedQuery<Template> query = em.createQuery("select object(o) from Template as o order by o.name", Template.class);
return query.getResultList();
}

public List<Template> findOrphan() {
TypedQuery<Template> query = em.createQuery("select object(o) from Template as o where o.dataverse.id is null order by o.name", Template.class);
return query.getResultList();
}

public List<Dataverse> findDataversesByDefaultTemplateId(Long defaultTemplateId) {
TypedQuery<Dataverse> query = em.createQuery("select object(o) from Dataverse as o where o.defaultTemplate.id =:defaultTemplateId order by o.name", Dataverse.class);
Expand Down
44 changes: 44 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/api/Admin.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import edu.harvard.iq.dataverse.DatasetVersionServiceBean;
import edu.harvard.iq.dataverse.Dataverse;
import edu.harvard.iq.dataverse.DataverseRequestServiceBean;
import edu.harvard.iq.dataverse.DataverseServiceBean;
import edu.harvard.iq.dataverse.DataverseSession;
import edu.harvard.iq.dataverse.DvObject;
import edu.harvard.iq.dataverse.validation.EMailValidator;
Expand Down Expand Up @@ -104,6 +105,7 @@
import static edu.harvard.iq.dataverse.util.json.JsonPrinter.json;
import static edu.harvard.iq.dataverse.util.json.JsonPrinter.rolesToJson;
import static edu.harvard.iq.dataverse.util.json.JsonPrinter.toJsonArray;
import java.math.BigDecimal;


import java.util.ArrayList;
Expand Down Expand Up @@ -143,6 +145,8 @@ public class Admin extends AbstractApiBean {
DataFileServiceBean fileService;
@EJB
DatasetServiceBean datasetService;
@EJB
DataverseServiceBean dataverseService;
@EJB
DatasetVersionServiceBean datasetversionService;
@Inject
Expand Down Expand Up @@ -240,6 +244,46 @@ public Response deleteTemplate(@PathParam("id") long id) {

return ok("Template " + doomed.getName() + " deleted.");
}

@Path("template/{alias}")
@GET
public Response findTemplates(@PathParam("alias") String alias) {
List<Template> templates;
try {
if (alias.equals("orphanTemplates")) {
templates = templateService.findOrphan();
} else if (alias.equals("allTemplates")) {
templates = templateService.findAll();
} else {
Dataverse owner = dataverseService.findByAlias(alias);
if (owner == null) {
return notFound("Dataverse " + alias + " not found");
}
templates = templateService.findByOwnerId(owner.getId());
}


JsonArrayBuilder container = Json.createArrayBuilder();
for (Template t : templates) {
JsonObjectBuilder bld = Json.createObjectBuilder();
bld.add("templateId", t.getId());
bld.add("templateName", t.getName());
Dataverse loopowner = t.getDataverse();
if (loopowner != null) {
bld.add("owner", loopowner.getDisplayName());
} else {
bld.add("owner", "This an orphan template, it may be safely removed");
}
container.add(bld);
}

return ok(container);

} catch (Exception e) {
logger.log(Level.SEVERE, "Error while testing permissions", e);
return error(Response.Status.INTERNAL_SERVER_ERROR, e.getMessage());
}
}

@Path("authenticationProviderFactories")
@GET
Expand Down

0 comments on commit caacaab

Please sign in to comment.