Skip to content

Commit 29b502d

Browse files
authored
Merge pull request duracloud#202 from mikejritter/dc-1351
DC-1351: Support for extended manifest attributes
2 parents 5e15354 + 5f7b840 commit 29b502d

15 files changed

Lines changed: 191 additions & 337 deletions

File tree

common/src/main/java/org/duracloud/common/constant/ManifestFormat.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
public enum ManifestFormat {
1717
TSV("text/tab-separated-values"),
18+
EXTENDED_TSV("text/tab-separated-values"),
1819
BAGIT("text/bagit");
1920

2021
private String mimeType;

duradmin/src/main/java/org/duracloud/duradmin/spaces/controller/ManifestController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public String get(@PathVariable("storeId") String storeId,
5959
ManifestFormat format = ManifestFormat.valueOf(manifestFormat.toUpperCase());
6060
InputStream is = contentStore.getManifest(spaceId, format);
6161
String extension = "txt";
62-
if (format.equals(ManifestFormat.TSV)) {
62+
if (format.equals(ManifestFormat.TSV) || format.equals(ManifestFormat.EXTENDED_TSV)) {
6363
extension = "tsv";
6464
}
6565
StringBuffer contentDisposition = new StringBuffer();

duradmin/src/main/webapp/WEB-INF/jsp/spaces/spaces-manager.jsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,7 @@
806806
class="dropdown dropdown-tip">
807807
<ul class="dropdown-menu">
808808
<li><a id="manifest-tsv" href="">Tab Separated (TSV)</a></li>
809+
<li><a id="manifest-tsv-extended" href="">Tab Separated (TSV) - All Attributes</a></li>
809810
<li><a id="manifest-bagit" href="">Bagit</a></li>
810811
</ul>
811812
</div>

duradmin/src/main/webapp/js/spaces-manager.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3258,6 +3258,7 @@ $(function() {
32583258
// attach delete button listener
32593259
var manifestUrl = "/duradmin/manifest/"+this._storeId+"/"+this._spaceId + "?format="
32603260
$("#manifest-tsv").attr("href", manifestUrl+"tsv");
3261+
$("#manifest-tsv-extended").attr("href", manifestUrl+"extended_tsv");
32613262
$("#manifest-bagit").attr("href", manifestUrl+"bagit");
32623263
}
32633264

manifest/src/main/java/org/duracloud/manifest/ContentMessage.java

Lines changed: 0 additions & 253 deletions
This file was deleted.

manifest/src/main/java/org/duracloud/manifest/ManifestFormatter.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import java.io.OutputStream;
1111
import java.text.ParseException;
12-
import java.util.Collection;
1312

1413
import org.duracloud.mill.db.model.ManifestItem;
1514

@@ -21,15 +20,6 @@
2120
*/
2221
public interface ManifestFormatter {
2322

24-
/**
25-
* This method writes the arg events to the arg output stream.
26-
*
27-
* @param events to write
28-
* @param output destination of formatted events
29-
*/
30-
public void writeEventsToOutput(Collection<ContentMessage> events,
31-
OutputStream output);
32-
3323
/**
3424
* @param item to write
3525
* @param outputStream destination of formatted items. Null manifest items are ignored.

manifest/src/main/java/org/duracloud/manifest/impl/BagitManifestFormatter.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@
2424
public class BagitManifestFormatter extends ManifestFormatterBase {
2525
private static Pattern LINE_PATTERN = Pattern.compile("(\\w+)\\s+(.*)/(.*)");
2626

27-
private final Logger log =
28-
LoggerFactory.getLogger(BagitManifestFormatter.class);
27+
private final Logger log = LoggerFactory.getLogger(BagitManifestFormatter.class);
2928

3029
@Override
3130
protected Logger log() {
@@ -38,13 +37,13 @@ public String getHeader() {
3837
}
3938

4039
@Override
41-
protected String formatLine(String contentChecksum, String spaceId, String contentId) {
40+
public String formatLine(ManifestItem item) {
4241
StringBuilder line = new StringBuilder();
43-
line.append(contentChecksum);
42+
line.append(item.getContentChecksum());
4443
line.append(" ");
45-
line.append(spaceId);
44+
line.append(item.getSpaceId());
4645
line.append("/");
47-
line.append(contentId);
46+
line.append(item.getContentId());
4847

4948
return line.toString();
5049
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.duracloud.manifest.impl;
2+
3+
import static org.duracloud.common.util.bulk.ManifestVerifier.DELIM;
4+
5+
import java.text.ParseException;
6+
7+
import org.duracloud.mill.db.model.ManifestItem;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
11+
/**
12+
* Class which formats manifests with additional headers (content-size, mime-type) as tab separated values
13+
*
14+
* @author mikejritter
15+
*/
16+
public class ExtendedTsvManifestFormatter extends ManifestFormatterBase {
17+
private static final Logger logger = LoggerFactory.getLogger(ExtendedTsvManifestFormatter.class);
18+
19+
private static final String HEADER =
20+
"space-id" + DELIM + "content-id" + DELIM + "MD5" + DELIM + "content-size" + DELIM + "mime-type";
21+
22+
@Override
23+
protected Logger log() {
24+
return logger;
25+
}
26+
27+
@Override
28+
public String formatLine(ManifestItem item) {
29+
return item.getSpaceId() + DELIM + item.getContentId() + DELIM +
30+
item.getContentChecksum() + DELIM + item.getContentSize() + DELIM +
31+
item.getContentMimetype();
32+
}
33+
34+
@Override
35+
public String getHeader() {
36+
return HEADER;
37+
}
38+
39+
@Override
40+
public ManifestItem parseLine(String line) throws ParseException {
41+
String[] parse = line.split("\t");
42+
if (parse.length != 5) {
43+
throw new ParseException("Line doesn't match tsv format: unable to parse line: ->" + line + "<-", 0);
44+
}
45+
46+
ManifestItem item = new ManifestItem();
47+
item.setSpaceId(parse[0]);
48+
item.setContentId(parse[1]);
49+
item.setContentChecksum(parse[2]);
50+
item.setContentSize(parse[3]);
51+
item.setContentMimetype(parse[4]);
52+
53+
return item;
54+
}
55+
}

0 commit comments

Comments
 (0)