Skip to content

Commit

Permalink
Merge branch '4.1.13'
Browse files Browse the repository at this point in the history
Conflicts:
	pom.xml
	src/main/webapp/index.html
  • Loading branch information
hplahar committed Apr 2, 2015
2 parents b71dddf + 4302920 commit f45432e
Show file tree
Hide file tree
Showing 131 changed files with 4,984 additions and 20,753 deletions.
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ target/
.*
war/
*.class


data/
ice.iml
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ You can try out the software and use our tools on our [Public Registry](http://p
[ICE Google Group](http://groups.google.com/group/gd-ice)
<br>[Releases](https://github.com/JBEI/ice/releases): Download the war file associated with the latest release
<br>[REST API WADL] (https://public-registry.jbei.org/rest/application.wadl)
<br>[Pre-packaged installation for your local machine](http://public-registry.jbei.org/site/packages): Please note that this is intended for convenient evaluation of ICE and not to be used in a production environment.

<b>Related Projects</b>

Expand Down
7 changes: 1 addition & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<groupId>org.jbei</groupId>
<artifactId>ice</artifactId>
<packaging>war</packaging>
<version>4.1.12</version>
<version>4.1.13</version>
<name>ice</name>
<description>Inventory of Composable Elements (ICE) for Synthetic Biology</description>
<repositories>
Expand Down Expand Up @@ -102,11 +102,6 @@
<artifactId>lang</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
Expand Down
21 changes: 1 addition & 20 deletions src/main/java/org/jbei/ice/lib/access/Authorization.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import org.jbei.ice.lib.account.AccountType;
import org.jbei.ice.lib.account.model.Account;
import org.jbei.ice.lib.dao.DAOFactory;
import org.jbei.ice.lib.dao.ICanReadCallback;
import org.jbei.ice.lib.dao.IDataModel;
import org.jbei.ice.lib.dao.IDataTransferModel;
import org.jbei.ice.lib.dao.IRepository;
Expand Down Expand Up @@ -93,29 +92,11 @@ public boolean canWrite(String userId, T object) {

public void expectWrite(String userId, T object) throws PermissionException {
if (!canWrite(userId, object))
throw new PermissionException(userId);
throw new PermissionException(userId + " is lacking write permissions");
}

public void expectAdmin(String userId) throws PermissionException {
if (!isAdmin(userId))
throw new PermissionException(userId + " attempting to access admin restricted action");
}

/**
* Authorization callback to determine if user specified is
* permitted to read the object
*/
public class AuthorizationCallback implements ICanReadCallback<T> {

private final String userId;

public AuthorizationCallback(String userId) {
this.userId = userId;
}

@Override
public boolean canRead(T object) {
return Authorization.this.canRead(userId, object);
}
}
}
27 changes: 9 additions & 18 deletions src/main/java/org/jbei/ice/lib/bulkupload/BulkCSVUpload.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,21 @@
package org.jbei.ice.lib.bulkupload;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import au.com.bytecode.opencsv.CSVParser;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
import org.apache.commons.lang.StringUtils;
import org.jbei.ice.lib.common.logging.Logger;
import org.jbei.ice.lib.dto.bulkupload.EntryField;
import org.jbei.ice.lib.dto.entry.AttachmentInfo;
import org.jbei.ice.lib.dto.entry.EntryType;
import org.jbei.ice.lib.dto.entry.PartData;
import org.jbei.ice.lib.entry.EntryUtil;

import au.com.bytecode.opencsv.CSVParser;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
import org.apache.commons.lang.StringUtils;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Path;
import java.util.*;

/**
* Helper class for dealing with bulk CSV uploads
Expand Down Expand Up @@ -108,10 +103,6 @@ protected String validate(List<BulkUploadAutoUpdate> updates) {
return null;
}

protected boolean isValidHeader(EntryField field) {
return (field != null && headerFields.contains(field));
}

EntryType detectSubType(String field) {
String[] fieldNames = field.split("\\s+");
return EntryType.nameToType(fieldNames[0]);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package org.jbei.ice.lib.bulkupload;

import java.util.ArrayList;
import java.util.List;

import org.jbei.ice.lib.dto.bulkupload.EntryField;
import org.jbei.ice.lib.dto.entry.EntryType;

import java.util.ArrayList;
import java.util.List;

/**
* Headers for each of the entry add types for bulk csv upload
*
Expand Down Expand Up @@ -43,7 +43,7 @@ public static List<EntryField> getCommonFields() {
list.add(EntryField.PI_EMAIL);
list.add(EntryField.FUNDING_SOURCE);
list.add(EntryField.IP);
list.add(EntryField.BIOSAFETY_LEVEL);
list.add(EntryField.BIO_SAFETY_LEVEL);
list.add(EntryField.NAME);
list.add(EntryField.ALIAS);
list.add(EntryField.KEYWORDS);
Expand Down
99 changes: 52 additions & 47 deletions src/main/java/org/jbei/ice/lib/bulkupload/BulkEntryCreator.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import org.jbei.ice.lib.entry.EntryController;
import org.jbei.ice.lib.entry.EntryCreator;
import org.jbei.ice.lib.entry.EntryEditor;
import org.jbei.ice.lib.entry.EntryUtil;
import org.jbei.ice.lib.entry.EntryFactory;
import org.jbei.ice.lib.entry.attachment.Attachment;
import org.jbei.ice.lib.entry.model.Entry;
import org.jbei.ice.lib.entry.model.Strain;
Expand Down Expand Up @@ -63,28 +63,17 @@ protected BulkUpload createOrRetrieveBulkUpload(Account account, BulkUploadAutoU
EntryType addType) {
BulkUpload draft = dao.get(autoUpdate.getBulkUploadId());
if (draft == null) {
draft = new BulkUpload();
draft.setName("Untitled");
draft.setAccount(account);
draft.setStatus(BulkUploadStatus.IN_PROGRESS);
draft.setImportType(addType.toString());
draft.setCreationTime(new Date(System.currentTimeMillis()));
draft.setLastUpdateTime(draft.getCreationTime());
dao.create(draft);
long id = createBulkUpload(account.getEmail(), addType);
draft = dao.get(id);
}
return draft;
}

public long createBulkUpload(String userId, EntryType entryType) {
BulkUpload draft = new BulkUpload();
draft.setName("Untitled");
Account account = accountController.getByEmail(userId);
draft.setAccount(account);
draft.setStatus(BulkUploadStatus.IN_PROGRESS);
draft.setImportType(entryType.toString());
draft.setCreationTime(new Date());
draft.setLastUpdateTime(draft.getCreationTime());
return dao.create(draft).getId();
BulkUploadInfo info = new BulkUploadInfo();
info.setStatus(BulkUploadStatus.IN_PROGRESS);
info.setType(entryType.getName());
return controller.create(userId, info).getId();
}

public PartData createEntry(String userId, long bulkUploadId, PartData data) {
Expand All @@ -95,6 +84,9 @@ public PartData createEntry(String userId, long bulkUploadId, PartData data) {

protected PartData createEntryForUpload(String userId, PartData data, BulkUpload upload) {
Entry entry = InfoToModelFactory.infoToEntry(data);
if (entry == null)
return null;

entry.setVisibility(Visibility.DRAFT.getValue());
Account account = accountController.getByEmail(userId);
entry.setOwner(account.getFullName());
Expand All @@ -105,18 +97,20 @@ protected PartData createEntryForUpload(String userId, PartData data, BulkUpload
// create linked
PartData linked = data.getLinkedParts().get(0);
Entry linkedEntry = InfoToModelFactory.infoToEntry(linked);
linkedEntry.setVisibility(Visibility.DRAFT.getValue());
linkedEntry.setOwner(account.getFullName());
linkedEntry.setOwnerEmail(account.getEmail());
linkedEntry = entryDAO.create(linkedEntry);
if (linkedEntry != null) {
linkedEntry.setVisibility(Visibility.DRAFT.getValue());
linkedEntry.setOwner(account.getFullName());
linkedEntry.setOwnerEmail(account.getEmail());
linkedEntry = entryDAO.create(linkedEntry);

linked.setId(linkedEntry.getId());
linked.setModificationTime(linkedEntry.getModificationTime().getTime());
data.getLinkedParts().clear();
data.getLinkedParts().add(linked);
linked.setId(linkedEntry.getId());
linked.setModificationTime(linkedEntry.getModificationTime().getTime());
data.getLinkedParts().clear();
data.getLinkedParts().add(linked);

// link to main entry in the database
entry.getLinkedEntries().add(linkedEntry);
// link to main entry in the database
entry.getLinkedEntries().add(linkedEntry);
}
}

entry = entryDAO.create(entry);
Expand Down Expand Up @@ -149,9 +143,11 @@ protected PartData doUpdate(String userId, Entry entry, PartData data) {
return null;

entry = InfoToModelFactory.updateEntryField(data, entry);
if (entry == null)
return null;

entry.setModificationTime(new Date());
entry = entryDAO.update(entry);

data.setModificationTime(entry.getModificationTime().getTime());

// check if there is any linked parts. update if so (expect a max of 1)
Expand All @@ -161,8 +157,7 @@ protected PartData doUpdate(String userId, Entry entry, PartData data) {
// retrieve the entry (this is the only time you can create another entry on update)
PartData linkedPartData = data.getLinkedParts().get(0); // bulk upload can only link 1
Entry linkedEntry = entryDAO.get(linkedPartData.getId());
if (linkedEntry == null) {
linkedEntry = InfoToModelFactory.infoToEntry(linkedPartData);
if (linkedEntry == null && (linkedEntry = InfoToModelFactory.infoToEntry(linkedPartData)) != null) {
linkedEntry.setVisibility(Visibility.DRAFT.getValue());
Account account = accountController.getByEmail(userId);
linkedEntry.setOwner(account.getFullName());
Expand Down Expand Up @@ -199,7 +194,7 @@ public BulkUploadInfo updateStatus(String userId, long id, BulkUploadStatus stat

// rejected by admin
case IN_PROGRESS:
ArrayList<Long> entryList = dao.getEntryIds(id);
ArrayList<Long> entryList = dao.getEntryIds(upload);
for (Number l : entryList) {
Entry entry = entryDAO.get(l.longValue());
if (entry == null || entry.getVisibility() != Visibility.PENDING.getValue())
Expand Down Expand Up @@ -262,8 +257,7 @@ public BulkUploadInfo renameBulkUpload(String userId, long id, String name) {
* @return updated wrapper for information used to create entry. Will contain additional information
* such as the unique identifier for the part, if one was created
*/
public BulkUploadAutoUpdate createOrUpdateEntry(String userId, BulkUploadAutoUpdate autoUpdate,
EntryType addType) {
public BulkUploadAutoUpdate createOrUpdateEntry(String userId, BulkUploadAutoUpdate autoUpdate, EntryType addType) {
Account account = accountController.getByEmail(userId);
BulkUpload draft = null;

Expand All @@ -279,10 +273,16 @@ public BulkUploadAutoUpdate createOrUpdateEntry(String userId, BulkUploadAutoUpd

// if entry is null, create entry
if (entry == null) {
entry = EntryUtil.createEntryFromType(autoUpdate.getType(), account.getFullName(), account.getEmail());
entry = EntryFactory.buildEntry(autoUpdate.getType());
if (entry == null)
return null;

String name = account.getFullName();
String email = account.getEmail();
entry.setOwner(name);
entry.setOwnerEmail(email);
entry.setCreator(name);
entry.setCreatorEmail(email);
entry = creator.createEntry(account, entry, null);

autoUpdate.setEntryId(entry.getId());
Expand Down Expand Up @@ -382,6 +382,9 @@ public boolean createEntries(String userId, long draftId, List<PartData> data, H
continue;

Entry entry = InfoToModelFactory.infoToEntry(datum);
if (entry == null)
continue;

entry.setVisibility(Visibility.DRAFT.getValue());
Account account = accountController.getByEmail(userId);
entry.setOwner(account.getFullName());
Expand All @@ -392,19 +395,21 @@ public boolean createEntries(String userId, long draftId, List<PartData> data, H
// create linked
PartData linked = datum.getLinkedParts().get(0);
Entry linkedEntry = InfoToModelFactory.infoToEntry(linked);
linkedEntry.setVisibility(Visibility.DRAFT.getValue());
linkedEntry.setOwner(account.getFullName());
linkedEntry.setOwnerEmail(account.getEmail());
linkedEntry = entryDAO.create(linkedEntry);
if (linkedEntry != null) {
linkedEntry.setVisibility(Visibility.DRAFT.getValue());
linkedEntry.setOwner(account.getFullName());
linkedEntry.setOwnerEmail(account.getEmail());
linkedEntry = entryDAO.create(linkedEntry);

linked.setId(linkedEntry.getId());
linked.setModificationTime(linkedEntry.getModificationTime().getTime());
linked.setId(linkedEntry.getId());
linked.setModificationTime(linkedEntry.getModificationTime().getTime());

// check for attachments and sequences for linked entry
saveFiles(userId, linked, linkedEntry, files);
// check for attachments and sequences for linked entry
saveFiles(linked, linkedEntry, files);

// link to main entry in the database
entry.getLinkedEntries().add(linkedEntry);
// link to main entry in the database
entry.getLinkedEntries().add(linkedEntry);
}
}

entry = entryDAO.create(entry);
Expand All @@ -413,13 +418,13 @@ public boolean createEntries(String userId, long draftId, List<PartData> data, H
dao.update(draft);

// save files
saveFiles(userId, datum, entry, files);
saveFiles(datum, entry, files);
}

return true;
}

protected void saveFiles(String userId, PartData data, Entry entry, HashMap<String, InputStream> files) {
protected void saveFiles(PartData data, Entry entry, HashMap<String, InputStream> files) {
// check sequence
try {
String sequenceName = data.getSequenceFileName();
Expand Down
Loading

0 comments on commit f45432e

Please sign in to comment.