Skip to content

Commit

Permalink
Specimen Upload mechanism public
Browse files Browse the repository at this point in the history
  • Loading branch information
remarq committed Sep 29, 2024
1 parent 567e112 commit 3aeedd1
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 166 deletions.
9 changes: 8 additions & 1 deletion src/org/calacademy/antweb/Login.java
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,14 @@ public Boolean isUploadImages() {
public void setIsUploadImages(boolean isUploadImages) {
this.isUploadImages = isUploadImages;
}


private String uploadAs = null;
public void setUploadAs(String uploadAs) {
this.uploadAs = uploadAs;
}
public String getUploadAs() {
return uploadAs;
}

public ArrayList<SpeciesListable> getProjects() {
return projects;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ public ActionForward execute(ActionMapping mapping, ActionForm f,
login.setIsAdmin(form.isAdmin());
login.setIsUploadSpecimens(form.isUploadSpecimens());
login.setIsUploadImages(form.isUploadImages());
login.setUploadAs(form.getUploadAs());

// Handle Projects Access
String[] projects = form.getProjects();
Expand Down
9 changes: 9 additions & 0 deletions src/org/calacademy/antweb/curate/login/SaveLoginForm.java
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,15 @@ public void setChangePassword(String changePassword) {
this.changePassword = changePassword;
}

private String uploadAs;
public String getUploadAs() {
return uploadAs;
}
public void setUploadAs(String uploadAs) {
this.uploadAs = uploadAs;
}


public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {

ActionErrors errors = null;
Expand Down
19 changes: 13 additions & 6 deletions src/org/calacademy/antweb/home/LoginDb.java
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,8 @@ private Curator instantiateCurator(ResultSet rset)
login.setIsUploadSpecimens(rset.getBoolean("is_upload_specimens"));
login.setIsUploadImages(rset.getBoolean("is_upload_images"));

login.setUploadAs(rset.getString("upload_as"));

if (login.getId() == 0) return null;
return login;
}
Expand Down Expand Up @@ -260,6 +262,8 @@ private Login instantiate(Login login, ResultSet rset)
//curator.getGroup().setCurator(curator); // backwards, but allows code to remain unchanged.
login.setIsUploadSpecimens(rset.getBoolean("is_upload_specimens"));
login.setIsUploadImages(rset.getBoolean("is_upload_images"));

login.setUploadAs(rset.getString("upload_as"));
}
return login;
}
Expand Down Expand Up @@ -493,8 +497,8 @@ public void saveLogin(Login login) throws SQLException, AntwebException {
}

String theInsert = "insert into login" +
" (id, name, first_name, last_name, email, password, group_id, is_admin, is_upload_specimens, is_upload_images)" +
" values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
" (id, name, first_name, last_name, email, password, group_id, is_admin, is_upload_specimens, is_upload_images, upload_as)" +
" values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

//s_log.info("saveLogin() insert:" + theInsert);

Expand All @@ -514,6 +518,7 @@ public void saveLogin(Login login) throws SQLException, AntwebException {
stmt.setInt(8, isAdmin);
stmt.setInt(9, uploadSpecimens);
stmt.setInt(10, uploadImages);
stmt.setString(11, login.getUploadAs());

stmt.executeUpdate();
//s_log.warn("saveLogin() isAdmin:" + login.isAdmin() + " projects:" + login.getProjects());
Expand Down Expand Up @@ -592,7 +597,7 @@ public void updateLogin(Login login, Login accessLogin) throws SQLException {
stmt.setInt(6, login.getId());
} else if (isAdminUpdate && !isSelfUpdate) {
String adminUpdate = "update login "
+ "set name = ?, first_name = ?, last_name = ?, email = ?, group_id = ?, is_admin = ?, is_upload_specimens = ?, is_upload_images = ? "
+ "set name = ?, first_name = ?, last_name = ?, email = ?, group_id = ?, is_admin = ?, is_upload_specimens = ?, is_upload_images = ?, upload_as = ? "
+ "where id = ?";

theUpdate = adminUpdate;
Expand All @@ -606,10 +611,11 @@ public void updateLogin(Login login, Login accessLogin) throws SQLException {
stmt.setInt(6, isAdmin);
stmt.setInt(7, uploadSpecimens);
stmt.setInt(8, uploadImages);
stmt.setInt(9, login.getId());
stmt.setString(9, login.getUploadAs());
stmt.setInt(10, login.getId());
} else if (isAdminUpdate && isSelfUpdate) {
String adminSelfUpdate = "update login "
+ "set name = ?, first_name = ?, last_name = ?, email = ?, password = ?, group_id = ?, is_admin = ?, is_upload_specimens = ?, is_upload_images = ? "
+ "set name = ?, first_name = ?, last_name = ?, email = ?, password = ?, group_id = ?, is_admin = ?, is_upload_specimens = ?, is_upload_images = ?, upload_as = ? "
+ "where id = ?";

theUpdate = adminSelfUpdate;
Expand All @@ -624,7 +630,8 @@ public void updateLogin(Login login, Login accessLogin) throws SQLException {
stmt.setInt(7, isAdmin);
stmt.setInt(8, uploadSpecimens);
stmt.setInt(9, uploadImages);
stmt.setInt(10, login.getId());
stmt.setString(10, login.getUploadAs());
stmt.setInt(11, login.getId());
}

//A.log("updateLogin() update:" + DBUtil.getPreparedStatementString(stmt));
Expand Down
212 changes: 53 additions & 159 deletions web/curate/curate-body.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -132,71 +132,74 @@ Need Help? Check out the <a href="<%= domainApp %>/documentation.do" target="new
}
if (!takeDownUpload || LoginMgr.isAdmin(accessLogin)) { %>

<html:form method="POST" action="upload.do" enctype="multipart/form-data">
<input type="hidden" name="ancFileDirectory" value="none" />
<input type="hidden" name="action" value="specimenUpload" />
<input type="hidden" name="updateAdvanced" value="no" />
<input type="hidden" name="updateFieldGuide" value="none" />
<input type="hidden" name="images" value="no" />
<input type="hidden" name="outputFileName" value="" />
<input type="hidden" name="successkey" value="null" />
<input type="hidden" name="updateAdvanced" value="yes" />

<div class="admin_action_item">
<div style="float:left;">
<h2>Specimen Data</h2>
</div>
<div class="clear"></div>
</div>

<div class="admin_action_item">
<br><div class="action_desc"><b>Upload</b> Specimen File:<br>&nbsp;&nbsp;&nbsp;(tab-delimited .txt file)</div>
<div class="action_dropdown"></div>
<div class="action_browse">
<html:file property="theFile" />
</div>
<div class="clear"></div>
<!-- Universal Specimen Upload -->
<!-- Antweb, TaxonWorks, or GBIF Specimen (file or Zip File) Upload -->

<% if (AntwebProps.isDevMode()) {
if (true) { %>
<div class="align_left">
<select name="specimenUploadType">
<option value="full" selected>Full
<option value="incremental">Incremental
<option value="diff">Diff
<option value="augment">Augment
</select><br>
</div>
<% } else { %>
<div class="admin_action_item">
<html:checkbox property="whole" value="true"/> Update entire the biota file
</div>
<% } %>
<% } else { %>
<input type="hidden" name="whole" value="true" />
<% } %>

<% if (false && LoginMgr.isCurator(accessLogin)) { // || accessLogin.getId() == 16) { // || accessLogin.getId() == 338 %>
<div class="align_left">
<select name="encoding">
<option value="default" selected>Default
<option value="UTF-8">UTF-8
<option value="MacRoman">MacRoman
<option value="ISO8859_1">ISO8859_1
<html:form method="POST" action="upload.do" enctype="multipart/form-data">

<div class="admin_action_item">
<br>
<div class="action_desc"><b>Upload</b> Specimen File or Zip File:<br>&nbsp;&nbsp;&nbsp;</div>
<div class="action_browse">
<html:file property="theFile" />
</div>
<div class="clear"></div>

<%
if (LoginMgr.isAdmin(accessLogin)) { %>

<div class="align_left">
&nbsp;&nbsp;Upload Type:
<select name="action">
<option value="specimenUpload" selected>Antweb
<option value="taxonWorksUpload">TaxonWorks
<option value="GBIFUpload">GBIF
</select>
</div>
<% } %>
</div>

To calculate the taxon children counts run the <a href='<%= domainApp %>/utilData.do?action=runCountCrawls' title="If taxon children counts are not calculated subsequent to the upload, it will happen nightly.">Count Crawls<img src=<%= domainApp%>/image/new1.png width=20></a>
<br>If not returned an upload report, find it in the <a href='<%= domainApp %>/listSpecimenUploads.do?groupId=<%= accessGroup.getId() %>'>Specimen Upload Reports</a>.
<div class="align_left">
&nbsp;&nbsp;Upload as:
<select name="uploadAs">
<option value="<%= accessLogin.getId() %>" selected><%= accessLogin.getName() %>

<%
String uploadAs = accessLogin.getUploadAs();
if (uploadAs != null) {
List<String> curatorList = new ArrayList<String>(Arrays.asList(uploadAs.split(",")));
for (String curatorIdStr : curatorList) {
int curatorId = Integer.parseInt((curatorIdStr.trim()));
Login curator = LoginMgr.getCurator(curatorId);
%>
<option value="<%= curator.getId() %>"><%= curator.getName() %>
<% } %>
</select>
</div>

<div class="align_right"><input border="0" type="image" src="<%= domainApp %>/image/grey_submit.png" width="77" height="23" value="Submit" <%= active %>></div>
<div class="clear"></div>
</div>
<% } %>
<% } else { %>
<input type="hidden" name="action" value="specimenUpload" />
<input type="hidden" name="specimenUploadLoginId" value="<%= accessLogin.getId() %>" />

<% } %>

<div class="align_right"><input border="0" type="image" src="<%= domainApp %>/image/grey_submit.png" width="77" height="23" value="Submit" <%= active %>></div>
<div class="clear">
To calculate the taxon children counts run the <a href='<%= domainApp %>/utilData.do?action=runCountCrawls' title="If taxon children counts are not calculated subsequent to the upload, it will happen nightly.">Count Crawls<img src=<%= domainApp%>/image/new1.png width=20></a>
<br>If not returned an upload report, find it in the <a href='<%= domainApp %>/listSpecimenUploads.do?groupId=<%= accessGroup.getId() %>'>Specimen Upload Reports</a>. <br><br>
</div>
</div>
</html:form>

<!-- End Specimen file or Zip File Upload -->


<!-- Reload Specimen Data -->

<div class="admin_action_module">
Expand Down Expand Up @@ -343,115 +346,6 @@ To calculate the taxon children counts run the <a href='<%= domainApp %>/utilDat
</div>
</html:form>


<!-- TaxonWorks Specimen Zip File Upload -->
<% if (AntwebProps.isDevMode() || GroupMgr.isCAS(accessGroup)) { %>
<html:form method="POST" action="upload.do" enctype="multipart/form-data">
<input type="hidden" name="action" value="taxonWorksUpload" />

<div class="admin_action_item">
<div class="action_desc"><b>Upload</b> TaxonWorks Specimen Zip File:<br>&nbsp;&nbsp;&nbsp;(w/ tab-delimited .tsv file)</div>
<div class="action_browse">
<html:file property="theFile" />
</div>
<div class="clear"></div>

<input type="hidden" name="whole" value="true" />

<div class="align_right"><input border="0" type="image" src="<%= domainApp %>/image/grey_submit.png" width="77" height="23" value="Submit" <%= active %>></div>
<div class="clear"></div>
</div>
</html:form>

<!-- End TaxonWorks Specimen Zip File Upload -->
<% } %>


<!-- GBIF Specimen Zip File Upload -->
<% if (GroupMgr.isCAS(accessGroup) || LoginMgr.isMingnaUtep(accessLogin)) { %>
<!-- GBIF Specimen file or Zip File Upload -->

<html:form method="POST" action="upload.do" enctype="multipart/form-data">
<input type="hidden" name="action" value="GBIFUpload" />

<div class="admin_action_item">
<div class="action_desc"><b>Upload</b> GBIF Specimen File or Zip File:<br>&nbsp;&nbsp;&nbsp;</div>
<div class="action_browse">
<html:file property="theFile" />
</div>
<div class="clear"></div>

<input type="hidden" name="whole" value="true" />

<div class="align_right"><input border="0" type="image" src="<%= domainApp %>/image/grey_submit.png" width="77" height="23" value="Submit" <%= active %>></div>
<div class="clear"></div>
</div>
</html:form>

<!-- End GBIF Specimen file or Zip File Upload -->
<% } %>

<div class="admin_action_item">
<br><b><small>Testing: For Admin only:</small></b>
</div>


<!-- Universal Specimen Upload -->
<% if (AntwebProps.isDevMode() || LoginMgr.isAdmin(accessLogin)) { %>
<!-- Antweb, TaxonWorks, or GBIF Specimen (file or Zip File) Upload -->

<html:form method="POST" action="upload.do" enctype="multipart/form-data">

<div class="admin_action_item">
<div class="action_desc"><b>Upload</b> Specimen File or Zip File:<br>&nbsp;&nbsp;&nbsp;</div>
<div class="action_browse">
<html:file property="theFile" />
</div>
<div class="clear"></div>

<% if (LoginMgr.isAdmin(accessLogin)) { %>

<div class="align_left">
&nbsp;&nbsp;Upload Type:
<select name="action">
<option value="specimenUpload" selected>Antweb
<option value="taxonWorksUpload">TaxonWorks
<option value="GBIFUpload">GBIF
</select>
</div>

<div class="align_left">
&nbsp;&nbsp;Upload as:
<select name="uploadAs">
<option value="<%= accessLogin.getId() %>" selected><%= accessLogin.getName() %>
<option value="23">Michele
<option value="9716">Mingna
</select>
</div>

<% } else { %>
<input type="hidden" name="specimenUploadLoginId" value="<%= accessLogin.getId() %>" />

<!-- How do we know what upload file options a user has? Do we discern by file type or specify?
i.e. Minga is always GBIF?
-->

<% } %>



<div class="align_right"><input border="0" type="image" src="<%= domainApp %>/image/grey_submit.png" width="77" height="23" value="Submit" <%= active %>></div>
<div class="clear"></div>
</div>
</html:form>

<!-- End GBIF Specimen file or Zip File Upload -->
<% } %>





<% } %> <!-- takeDownUpload -->
<% } %> <!-- accessLogin.isUploadSpecimens() -->

Expand Down
8 changes: 8 additions & 0 deletions web/curate/viewLogin-body.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
boolean isSelf = (accessLogin.getId() == thisLogin.getId());
ArrayList<Group> groups = (ArrayList) request.getSession().getAttribute("antwebGroups");
A.log("viewLogin-body.jsp uploadAs:" + thisLogin.getUploadAs());
%>

<div class=admin_left>
Expand Down Expand Up @@ -194,6 +195,13 @@ NOTE: These will not be modified unless "Changed Password" button is selected.
<input type="checkbox" name="isUploadImages" <%= (thisLogin.isUploadImages() == true)?"checked":"" %> <%= (accessLogin.isAdmin()) ? "" : " disabled" %>>
</h3>

<% if (LoginMgr.isAdmin(accessLogin)) { %>
<br>
<H3>Upload As (comma separated list of curator IDs):
<input type="text" name="uploadAs" <%= (LoginMgr.isAdmin(accessLogin)) ? "" : " disabled" %> value="<%= thisLogin.getUploadAs() %>">
</h3>
<% } %>

<input type="hidden" name="id" value="<%= thisLogin.getId() %>">
<logic:present parameter="isNewLogin">
<input type="hidden" name="newLogin" value="true">
Expand Down

0 comments on commit 3aeedd1

Please sign in to comment.