diff --git a/pom.xml b/pom.xml index 4630dc9b7821acf53330edd2f484e4df56cc00ed..2c9bc6dfb54b6eb614e2c212085a65d2f3d7066a 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ <properties> <commons-io-version>2.4</commons-io-version> - <link-rewriter-version>0.0.4-SNAPSHOT</link-rewriter-version> + <link-rewriter-version>0.2.0-SNAPSHOT</link-rewriter-version> <saxon-version>9.4.0.7</saxon-version> <cxf-version>2.7.4</cxf-version> <confclient-version>1.0-SNAPSHOT</confclient-version> diff --git a/src/main/java/info/textgrid/services/aggregator/tree/Aggregation.java b/src/main/java/info/textgrid/services/aggregator/tree/Aggregation.java deleted file mode 100644 index c9b71065a05298536c653856981238f614e7eb3b..0000000000000000000000000000000000000000 --- a/src/main/java/info/textgrid/services/aggregator/tree/Aggregation.java +++ /dev/null @@ -1,41 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import info.textgrid.namespaces.metadata.core._2010.ObjectType; - -import java.util.List; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -public class Aggregation extends AggregationEntry implements IAggregation { - - private final List<IAggregationEntry> children = Lists.newArrayList(); - - public Aggregation(final ObjectType metadata) { - super(metadata); - } - - public Aggregation(final ObjectType metadata, final Aggregation parent) { - super(metadata, parent); - } - - // @Override - // public String toString() { - // return super.toString() + ": [" + (children == null? "!!!" : - // Joiner.on(", ").join(children)) + "]"; - // } - - protected IAggregation add(final IAggregationEntry child) { - children.add(child); - return this; - } - - /* (non-Javadoc) - * @see info.textgrid.services.aggregator.tree.IAggregation#getChildren() - */ - @Override - public ImmutableList<IAggregationEntry> getChildren() { - return ImmutableList.copyOf(children); - } - -} diff --git a/src/main/java/info/textgrid/services/aggregator/tree/AggregationEntry.java b/src/main/java/info/textgrid/services/aggregator/tree/AggregationEntry.java deleted file mode 100644 index df00fb48c58c3912cf3c18b0a49adcdb2f721c32..0000000000000000000000000000000000000000 --- a/src/main/java/info/textgrid/services/aggregator/tree/AggregationEntry.java +++ /dev/null @@ -1,72 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import info.textgrid.namespaces.metadata.core._2010.ObjectType; - -import java.net.URI; -import java.text.MessageFormat; - -import com.google.common.base.Optional; - -/** - * Represents an entry in an aggregation. - */ -public class AggregationEntry implements IAggregationEntry { - - private final ObjectType metadata; - - protected final Optional<Aggregation> parent; - - protected AggregationEntry(final ObjectType metadata) { - this(metadata, null); - } - - protected AggregationEntry(final ObjectType metadata, - final Aggregation parent) { - this.metadata = metadata; - this.parent = Optional.fromNullable(parent); - if (this.parent.isPresent()) { - parent.add(this); - } - } - - /* (non-Javadoc) - * @see info.textgrid.services.aggregator.tree.IAggregationEntry#getParent() - */ - @Override - public Optional<Aggregation> getParent() { - return parent; - } - - /* (non-Javadoc) - * @see info.textgrid.services.aggregator.tree.IAggregationEntry#getMetadata() - */ - @Override - public ObjectType getMetadata() { - return metadata; - } - - public String getFormat() { - return getMetadata().getGeneric().getProvided().getFormat(); - } - - @Override - public String toString() { - try { - return MessageFormat.format("{0} ({1}, {2})", metadata.getGeneric() - .getGenerated().getTextgridUri().getValue(), metadata - .getGeneric().getProvided().getTitle().get(0), metadata - .getGeneric().getProvided().getFormat()); - } catch (final NullPointerException e) { - return ("<AggregationEntry w/o complete metadata>"); - } - } - - /* (non-Javadoc) - * @see info.textgrid.services.aggregator.tree.IAggregationEntry#getTextGridURI() - */ - @Override - public URI getTextGridURI() { - return URI.create(getMetadata().getGeneric().getGenerated().getTextgridUri().getValue()); - } - -} diff --git a/src/main/java/info/textgrid/services/aggregator/tree/DefaultFilenamePolicy.java b/src/main/java/info/textgrid/services/aggregator/tree/DefaultFilenamePolicy.java deleted file mode 100644 index 2088bcfa2e2cba269f4ca29ed4453b4c8b4fa9d0..0000000000000000000000000000000000000000 --- a/src/main/java/info/textgrid/services/aggregator/tree/DefaultFilenamePolicy.java +++ /dev/null @@ -1,250 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import info.textgrid.namespaces.metadata.core._2010.ObjectType; - -import java.net.URI; - -import com.google.common.base.Optional; -import com.ibm.icu.text.Transliterator; - -/** - * The default filename policy is a stateless {@link IFilenamePolicy} that - * creates filenames from objects or aggregation objects according to the - * following rules: - * <ol> - * <li>An arbitrary string is {@linkplain #translate(String) translated} to a - * filename fragment by applying an ICU based transliteration that converts most - * scripts to the US-ASCII range. Then, most special characters are replaced by - * underscore characters.</li> - * <li>For a {@linkplain ObjectType TextGrid Metadata object}, the - * {@linkplain #getFilename(IAggregationEntry, boolean) generated file name} is - * created using the pattern <em>‹title0›.‹uripart›[.‹extension›]</em>, where - * <dl> - * <dt>title0</dt> - * <dd>is the first title of the object, {@linkplain #translate(String) - * translated} according to the rules outlined above,</dd> - * <dt>uripart</dt> - * <dd>is the TextGrid URI stripped from its <code>textgrid:</code> scheme,</dd> - * <dt>extension</dt> - * <dd>is a filename extension derived using - * {@link FileExtensionMap#getFirstExtension(String)} from the object's - * <em>format</em> field. The extension is only included when the - * <var>asParent</var> parameter is <code>false</code>.</dd> - * </dl> - * </li> - * <li>For an {@linkplain #getFilename(IAggregationEntry, boolean) aggregation - * entry}, the filename is created by first calculating the filename - * {@linkplain #getFilename(ObjectType, boolean) for the object's metadata}. If - * there is any {@linkplain #getBase(IAggregationEntry) base URI} for the given - * entry, the filename is then {@linkplain URI#resolve(String) resolved} against - * that.</li> - * <li>the {@linkplain #getBase(IAggregationEntry) base URI} for an aggregation - * entry is present iff the aggregation entry has a parent aggregation. If it is - * present, it is the file name for the parent aggregation entry in the - * <var>asParent</var> flavour with a <code>/</code> appended. - * </ol> - * - * @author Thorsten Vitt - * - */ -public class DefaultFilenamePolicy implements IFilenamePolicy { - - - /** - * Since this is a stateless implementation, clients can use the default instance - */ - public static final DefaultFilenamePolicy INSTANCE = new DefaultFilenamePolicy(); - - /** - * These are the ICU transformation rules used for {@link #translate(String)}. - */ - protected static String TRANSFORM_RULES = "::Any-Latin;\n" - + "Ä } [[:Upper:]] > AE;\n" + "Ä > Ae;\n" + "ä > ae;\n" - + "Ö } [[:Upper:]] > OE;\n" + "Ö > Oe;\n" + "ö > oe;\n" - + "Ãœ } [[:Upper:]] > UE;\n" + "Ãœ > Ue;\n" + "ü > ue;\n" - + "Å¿ > s;\n" + "ẞ > SS;\n" + "::NFD();\n" - + "[:Latin:]{[:Mn:]+} > ;\n" + "::NFC();\n" + "Æ > AE;\n" - + "à > D;\n" + "Ø > O;\n" + "Þ > TH;\n" + "ß > ss;\n" + "æ > ae;\n" - + "ð > d;\n" + "ø > o;\n" + "þ > th;\n" + "Ä > D;\n" + "Ä‘ > d;\n" - + "Ħ > H;\n" + "ħ > h;\n" + "ı > i;\n" + "IJ > IJ;\n" + "ij > ij;\n" - + "ĸ > q;\n" + "Ä¿ > L;\n" + "Å€ > l;\n" + "Å > L;\n" + "Å‚ > l;\n" - + "ʼn > \\'n;\n" + "ÅŠ > N;\n" + "Å‹ > n;\n" + "Å’ > OE;\n" - + "Å“ > oe;\n" + "Ŧ > T;\n" + "ŧ > t;\n" + "Å¿ > s;\n" + "Æ€ > b;\n" - + "Æ > B;\n" + "Æ‚ > B;\n" + "ƃ > b;\n" + "Ƈ > C;\n" + "ƈ > c;\n" - + "Ɖ > D;\n" + "ÆŠ > D;\n" + "Æ‹ > D;\n" + "ÆŒ > d;\n" + "Æ > E;\n" - + "Æ‘ > F;\n" + "Æ’ > f;\n" + "Æ“ > G;\n" + "Æ• > hv;\n" + "Æ– > I;\n" - + "Æ— > I;\n" + "Ƙ > K;\n" + "Æ™ > k;\n" + "Æš > l;\n" + "Æ > N;\n" - + "Æž > n;\n" + "Æ¢ > OI;\n" + "Æ£ > oi;\n" + "Ƥ > P;\n" + "Æ¥ > p;\n" - + "Æ« > t;\n" + "Ƭ > T;\n" + "Æ > t;\n" + "Æ® > T;\n" + "Ʋ > V;\n" - + "Ƴ > Y;\n" + "Æ´ > y;\n" + "Ƶ > Z;\n" + "ƶ > z;\n" + "Ç„ > DZ;\n" - + "Ç… > Dz;\n" + "dž > dz;\n" + "LJ > LJ;\n" + "Lj > Lj;\n" - + "lj > lj;\n" + "ÇŠ > NJ;\n" + "Ç‹ > Nj;\n" + "ÇŒ > nj;\n" - + "Ǥ > G;\n" + "Ç¥ > g;\n" + "DZ > DZ;\n" + "Dz > Dz;\n" + "dz > dz;\n" - + "È¡ > d;\n" + "Ȥ > Z;\n" + "È¥ > z;\n" + "È´ > l;\n" + "ȵ > n;\n" - + "ȶ > t;\n" + "È· > j;\n" + "ȸ > db;\n" + "ȹ > qp;\n" + "Ⱥ > A;\n" - + "È» > C;\n" + "ȼ > c;\n" + "Ƚ > L;\n" + "Ⱦ > T;\n" + "È¿ > s;\n" - + "É€ > z;\n" + "Ƀ > B;\n" + "É„ > U;\n" + "Ɇ > E;\n" + "ɇ > e;\n" - + "Ɉ > J;\n" + "ɉ > j;\n" + "ÉŒ > R;\n" + "É > r;\n" + "ÉŽ > Y;\n" - + "É > y;\n" + "É“ > b;\n" + "É• > c;\n" + "É– > d;\n" + "É— > d;\n" - + "É› > e;\n" + "ÉŸ > j;\n" + "É > g;\n" + "É¡ > g;\n" + "É¢ > G;\n" - + "ɦ > h;\n" + "ɧ > h;\n" + "ɨ > i;\n" + "ɪ > I;\n" + "É« > l;\n" - + "ɬ > l;\n" + "É > l;\n" + "ɱ > m;\n" + "ɲ > n;\n" + "ɳ > n;\n" - + "É´ > N;\n" + "ɶ > OE;\n" + "ɼ > r;\n" + "ɽ > r;\n" + "ɾ > r;\n" - + "Ê€ > R;\n" + "Ê‚ > s;\n" + "ʈ > t;\n" + "ʉ > u;\n" + "Ê‹ > v;\n" - + "Ê > Y;\n" + "Ê > z;\n" + "Ê‘ > z;\n" + "Ê™ > B;\n" + "Ê› > G;\n" - + "Êœ > H;\n" + "Ê > j;\n" + "ÊŸ > L;\n" + "Ê > q;\n" + "Ê£ > dz;\n" - + "Ê¥ > dz;\n" + "ʦ > ts;\n" + "ʪ > ls;\n" + "Ê« > lz;\n" - + "á´€ > A;\n" + "á´ > AE;\n" + "á´ƒ > B;\n" + "á´„ > C;\n" + "á´… > D;\n" - + "á´† > D;\n" + "á´‡ > E;\n" + "á´Š > J;\n" + "á´‹ > K;\n" + "á´Œ > L;\n" - + "á´ > M;\n" + "á´ > O;\n" + "á´˜ > P;\n" + "á´› > T;\n" + "á´œ > U;\n" - + "á´ > V;\n" + "á´¡ > W;\n" + "á´¢ > Z;\n" + "ᵫ > ue;\n" + "ᵬ > b;\n" - + "áµ > d;\n" + "áµ® > f;\n" + "ᵯ > m;\n" + "áµ° > n;\n" + "áµ± > p;\n" - + "áµ² > r;\n" + "áµ³ > r;\n" + "áµ´ > s;\n" + "áµµ > t;\n" + "ᵶ > z;\n" - + "ᵺ > th;\n" + "áµ» > I;\n" + "áµ½ > p;\n" + "áµ¾ > U;\n" + "ᶀ > b;\n" - + "ᶠ> d;\n" + "ᶂ > f;\n" + "ᶃ > g;\n" + "ᶄ > k;\n" + "ᶅ > l;\n" - + "ᶆ > m;\n" + "ᶇ > n;\n" + "ᶈ > p;\n" + "ᶉ > r;\n" + "ᶊ > s;\n" - + "ᶌ > v;\n" + "ᶠ> x;\n" + "ᶎ > z;\n" + "ᶠ> a;\n" + "ᶑ > d;\n" - + "ᶒ > e;\n" + "ᶓ > e;\n" + "ᶖ > i;\n" + "ᶙ > u;\n" + "ẚ > a;\n" - + "ẜ > s;\n" + "Ạ> s;\n" + "ẞ > SS;\n" + "Ỻ > LL;\n" + "á»» > ll;\n" - + "Ỽ > V;\n" + "ỽ > v;\n" + "Ỿ > Y;\n" + "ỿ > y;\n" + "ff > ff;\n" - + "ï¬ > fi;\n" + "fl > fl;\n" + "ffi > ffi;\n" + "ffl > ffl;\n" - + "ſt > st;\n" + "st > st;\n" + "A > A;\n" + "ï¼¢ > B;\n" + "ï¼£ > C;\n" - + "D > D;\n" + "ï¼¥ > E;\n" + "F > F;\n" + "G > G;\n" + "H > H;\n" - + "I > I;\n" + "J > J;\n" + "K > K;\n" + "L > L;\n" + "ï¼ > M;\n" - + "ï¼® > N;\n" + "O > O;\n" + "ï¼° > P;\n" + "ï¼± > Q;\n" + "ï¼² > R;\n" - + "ï¼³ > S;\n" + "ï¼´ > T;\n" + "ï¼µ > U;\n" + "V > V;\n" + "ï¼· > W;\n" - + "X > X;\n" + "ï¼¹ > Y;\n" + "Z > Z;\n" + "ï½ > a;\n" + "b > b;\n" - + "c > c;\n" + "d > d;\n" + "ï½… > e;\n" + "f > f;\n" + "g > g;\n" - + "h > h;\n" + "i > i;\n" + "j > j;\n" + "k > k;\n" + "l > l;\n" - + "ï½ > m;\n" + "n > n;\n" + "ï½ > o;\n" + "ï½ > p;\n" + "q > q;\n" - + "ï½’ > r;\n" + "s > s;\n" + "ï½” > t;\n" + "u > u;\n" + "ï½– > v;\n" - + "ï½— > w;\n" + "x > x;\n" + "ï½™ > y;\n" + "z > z;\n" - + "© > '(C)';\n" + "® > '(R)';\n" + "â‚ > CE;\n" + "â‚¢ > Cr;\n" - + "â‚£ > Fr'.';\n" + "₤ > L'.';\n" + "₧ > Pts;\n" + "₹ > Rs;\n" - + "â„€ > a'_c';\n" + "â„ > a'_s';\n" + "â„‚ > C;\n" + "â„… > c'_o';\n" - + "℆ > c'_u';\n" + "â„Š > g;\n" + "â„‹ > H;\n" + "â„Œ > x;\n" - + "â„ > H;\n" + "â„Ž > h;\n" + "â„ > I;\n" + "â„‘ > I;\n" + "â„’ > L;\n" - + "â„“ > l;\n" + "â„• > N;\n" + "â„– > No;\n" + "â„™ > P;\n" + "â„š > Q;\n" - + "â„› > R;\n" + "â„œ > R;\n" + "â„ > R;\n" + "â„ž > Rx;\n" + "â„¡ > TEL;\n" - + "ℤ > Z;\n" + "ℨ > Z;\n" + "ℬ > B;\n" + "â„ > C;\n" + "ℯ > e;\n" - + "â„° > E;\n" + "ℱ > F;\n" + "ℳ > M;\n" + "â„´ > o;\n" + "ℹ > i;\n" - + "â„» > FAX;\n" + "â…… > D;\n" + "â…† > d;\n" + "â…‡ > e;\n" + "â…ˆ > i;\n" - + "â…‰ > j;\n" + "ã± > hPa;\n" + "ã² > da;\n" + "ã³ > AU;\n" - + "ã´ > bar;\n" + "ãµ > oV;\n" + "㶠> pc;\n" + "ã· > dm;\n" - + "㺠> IU;\n" + "㎀ > pA;\n" + "㎠> nA;\n" + "㎃ > mA;\n" - + "㎄ > kA;\n" + "㎅ > KB;\n" + "㎆ > MB;\n" + "㎇ > GB;\n" - + "㎈ > cal;\n" + "㎉ > kcal;\n" + "㎊ > pF;\n" + "㎋ > nF;\n" - + "㎎ > mg;\n" + "㎠> kg;\n" + "㎠> Hz;\n" + "㎑ > kHz;\n" - + "㎒ > MHz;\n" + "㎓ > GHz;\n" + "㎔ > THz;\n" + "㎙ > fm;\n" - + "㎚ > nm;\n" + "㎜ > mm;\n" + "㎠> cm;\n" + "㎞ > km;\n" - + "㎧ > m'_s';\n" + "㎩ > Pa;\n" + "㎪ > kPa;\n" + "㎫ > MPa;\n" - + "㎬ > GPa;\n" + "㎠> rad;\n" + "㎮ > rad'_s';\n" + "㎰ > ps;\n" - + "㎱ > ns;\n" + "㎳ > ms;\n" + "㎴ > pV;\n" + "㎵ > nV;\n" - + "㎷ > mV;\n" + "㎸ > kV;\n" + "㎹ > MV;\n" + "㎺ > pW;\n" - + "㎻ > nW;\n" + "㎽ > mW;\n" + "㎾ > kW;\n" + "㎿ > MW;\n" - + "ã‚ > a'.m.';\n" + "ム> Bq;\n" + "ã„ > cc;\n" + "ã… > cd;\n" - + "ㆠ> C'_kg';\n" + "㇠> Co'.';\n" + "㈠> dB;\n" + "㉠> Gy;\n" - + "㊠> ha;\n" + "ã‹ > HP;\n" + "㌠> in;\n" + "ã > KK;\n" - + "㎠> KM;\n" + "ã > kt;\n" + "ã > lm;\n" + "ã‘ > ln;\n" - + "ã’ > log;\n" + "ã“ > lx;\n" + "ã” > mb;\n" + "ã• > mil;\n" - + "ã– > mol;\n" + "ã— > pH;\n" + "㘠> p'.m.';\n" + "ã™ > PPM;\n" - + "ãš > PR;\n" + "ã› > sr;\n" + "㜠> Sv;\n" + "ã > Wb;\n" - + "ãž > V'_m';\n" + "㟠> A'_m';\n" + "â’œ > '(a)';\n" + "â’ > '(b)';\n" - + "â’ž > '(c)';\n" + "â’Ÿ > '(d)';\n" + "â’ > '(e)';\n" + "â’¡ > '(f)';\n" - + "â’¢ > '(g)';\n" + "â’£ > '(h)';\n" + "â’¤ > '(i)';\n" + "â’¥ > '(j)';\n" - + "â’¦ > '(k)';\n" + "â’§ > '(l)';\n" + "â’¨ > '(m)';\n" + "â’© > '(n)';\n" - + "â’ª > '(o)';\n" + "â’« > '(p)';\n" + "â’¬ > '(q)';\n" + "â’ > '(r)';\n" - + "â’® > '(s)';\n" + "â’¯ > '(t)';\n" + "â’° > '(u)';\n" + "â’± > '(v)';\n" - + "â’² > '(w)';\n" + "â’³ > '(x)';\n" + "â’´ > '(y)';\n" + "â’µ > '(z)';\n" - + "â… > I;\n" + "â…¡ > II;\n" + "â…¢ > III;\n" + "â…£ > IV;\n" - + "â…¤ > V;\n" + "â…¥ > VI;\n" + "â…¦ > VII;\n" + "â…§ > VIII;\n" - + "â…¨ > IX;\n" + "â…© > X;\n" + "â…ª > XI;\n" + "â…« > XII;\n" - + "â…¬ > L;\n" + "â… > C;\n" + "â…® > D;\n" + "â…¯ > M;\n" + "â…° > i;\n" - + "â…± > ii;\n" + "â…² > iii;\n" + "â…³ > iv;\n" + "â…´ > v;\n" - + "â…µ > vi;\n" + "â…¶ > vii;\n" + "â…· > viii;\n" + "â…¸ > ix;\n" - + "â…¹ > x;\n" + "â…º > xi;\n" + "â…» > xii;\n" + "â…¼ > l;\n" + "â…½ > c;\n" - + "â…¾ > d;\n" + "â…¿ > m;\n" + "¼ > '_1_4';\n" + "½ > '_1_2';\n" - + "¾ > '_3_4';\n" + "â…“ > '_1_3';\n" + "â…” > '_2_3';\n" - + "â…• > '_1_5';\n" + "â…– > '_2_5';\n" + "â…— > '_3_5';\n" - + "â…˜ > '_4_5';\n" + "â…™ > '_1_6';\n" + "â…š > '_5_6';\n" - + "â…› > '_1_8';\n" + "â…œ > '_3_8';\n" + "â… > '_5_8';\n" - + "â…ž > '_7_8';\n" + "â…Ÿ > '_1_';\n" + "â‘´ > '(1)';\n" - + "⑵ > '(2)';\n" + "⑶ > '(3)';\n" + "â‘· > '(4)';\n" + "⑸ > '(5)';\n" - + "⑹ > '(6)';\n" + "⑺ > '(7)';\n" + "â‘» > '(8)';\n" + "⑼ > '(9)';\n" - + "⑽ > '(10)';\n" + "⑾ > '(11)';\n" + "â‘¿ > '(12)';\n" - + "â’€ > '(13)';\n" + "â’ > '(14)';\n" + "â’‚ > '(15)';\n" - + "â’ƒ > '(16)';\n" + "â’„ > '(17)';\n" + "â’… > '(18)';\n" - + "â’† > '(19)';\n" + "â’‡ > '(20)';\n" + "â’ˆ > 1'.';\n" + "â’‰ > 2'.';\n" - + "â’Š > 3'.';\n" + "â’‹ > 4'.';\n" + "â’Œ > 5'.';\n" + "â’ > 6'.';\n" - + "â’Ž > 7'.';\n" + "â’ > 8'.';\n" + "â’ > 9'.';\n" + "â’‘ > 10'.';\n" - + "â’’ > 11'.';\n" + "â’“ > 12'.';\n" + "â’” > 13'.';\n" + "â’• > 14'.';\n" - + "â’– > 15'.';\n" + "â’— > 16'.';\n" + "â’˜ > 17'.';\n" + "â’™ > 18'.';\n" - + "â’š > 19'.';\n" + "â’› > 20'.';\n" + "〇 > 0;\n" + "ï¼ > 0;\n" - + "1 > 1;\n" + "ï¼’ > 2;\n" + "3 > 3;\n" + "ï¼” > 4;\n" + "5 > 5;\n" - + "ï¼– > 6;\n" + "ï¼— > 7;\n" + "8 > 8;\n" + "ï¼™ > 9;\n" + " > '_';\n" - + "  > '_';\n" + "  > '_';\n" + "  > '_';\n" + "  > '_';\n" - + "  > '_';\n" + "  > '_';\n" + "  > '_';\n" + "  > '_';\n" - + "  > '_';\n" + "⟠> '_';\n" + "  > '_';\n" - + "{ [^\\r\\n,0-9A-Za-z\\$\\(\\)!._-] } > \\_\n" + ""; - private static Transliterator transliterator; - - /** - * Returns (and creates on demand) an ICU transliterator as used in {@link #translate(String)} - * @return - */ - protected static Transliterator getTransliterator() { - if (transliterator == null) - transliterator = Transliterator.createFromRules("TgFilenames", - TRANSFORM_RULES, Transliterator.FORWARD); - return transliterator; - } - - @Override - public String translate(final String title) { - return getTransliterator().transform(title); - } - - @Override - public String getFilename(final ObjectType object, final boolean asParent) { - final String title = translate(object.getGeneric().getProvided() - .getTitle().get(0)); - final String uri = object.getGeneric().getGenerated().getTextgridUri() - .getValue().substring(9); // remove "textgrid:" - final String format = object.getGeneric().getProvided().getFormat(); - final String extension = FileExtensionMap.getInstance() - .getFirstExtension(format).or("dat"); - - final StringBuilder result = new StringBuilder(title); - result.append('.').append(uri); - if (!asParent) { - result.append('.').append(extension); - } else { - result.append('/'); - } - - return result.toString(); - } - - @Override - public URI getFilename(final IAggregationEntry entry, final boolean asParent) { - final String localName = getFilename(entry.getMetadata(), asParent); - final URI result; - final Optional<URI> base = getBase(entry); - - if (base.isPresent()) - result = base.get().resolve(localName); - else - result = URI.create(localName); - return result; - } - - @Override - public Optional<URI> getBase(final IAggregationEntry entry) { - if (entry.getParent().isPresent()) - return Optional.of(getFilename(entry.getParent().get(), true)); - else - return Optional.absent(); - } - - -} diff --git a/src/main/java/info/textgrid/services/aggregator/tree/DefaultMetaFilenamePolicy.java b/src/main/java/info/textgrid/services/aggregator/tree/DefaultMetaFilenamePolicy.java deleted file mode 100644 index 579d7b4a455499b3b314f926465b184b3276c905..0000000000000000000000000000000000000000 --- a/src/main/java/info/textgrid/services/aggregator/tree/DefaultMetaFilenamePolicy.java +++ /dev/null @@ -1,41 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import info.textgrid.namespaces.metadata.core._2010.ObjectType; - -import java.net.URI; - -import com.google.common.base.Optional; - -/** - * This filename policy augments a given filename policy by appending ".meta" - * to every generated filename. - */ -public class DefaultMetaFilenamePolicy implements IFilenamePolicy { - - private IFilenamePolicy filenamePolicy; - - public DefaultMetaFilenamePolicy(final IFilenamePolicy filenamePolicy) { - this.filenamePolicy = filenamePolicy; - } - - @Override - public String translate(final String title) { - return filenamePolicy.translate(title); - } - - @Override - public String getFilename(final ObjectType object, final boolean asParent) { - return filenamePolicy.getFilename(object, asParent).concat(".meta"); - } - - @Override - public URI getFilename(final IAggregationEntry entry, final boolean asParent) throws IllegalStateException { - return URI.create(filenamePolicy.getFilename(entry, asParent).toString().concat(".meta")); - } - - @Override - public Optional<URI> getBase(final IAggregationEntry entry) { - return filenamePolicy.getBase(entry); - } - -} diff --git a/src/main/java/info/textgrid/services/aggregator/tree/FileExtensionMap.java b/src/main/java/info/textgrid/services/aggregator/tree/FileExtensionMap.java deleted file mode 100644 index acb903e93661f2405d21f2baf725d6f7174718d3..0000000000000000000000000000000000000000 --- a/src/main/java/info/textgrid/services/aggregator/tree/FileExtensionMap.java +++ /dev/null @@ -1,89 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.LineNumberReader; -import java.nio.charset.Charset; -import java.text.MessageFormat; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import com.google.common.base.Optional; -import com.google.common.base.Throwables; -import com.google.common.collect.ImmutableCollection; -import com.google.common.collect.ImmutableListMultimap; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableMultimap.Builder; -import com.sun.istack.logging.Logger; - -/** - * Parses the (supplied) mime.types file and creates a map of all entries that - * specify both a MIME type and a file name. - */ -public class FileExtensionMap { - - private final ImmutableMultimap<String, String> map; - private static Logger logger = Logger.getLogger(FileExtensionMap.class); - - protected FileExtensionMap() throws IOException { - - // Comments start with # and reach to the end of line. - // A matching line contains of a mime type and one or more extensions - // comments are stripped - // <whitespace>? <mimetype>¹ <whitespace> <extensions>² <whitespace>? <comment>? - final Pattern mapLine = Pattern.compile("^[ \t]*([^# \t]+)[ \t]*([^#]+)[ \t]*(#.*)?$"); - final Pattern space = Pattern.compile("[ \t]+"); - final LineNumberReader reader = new LineNumberReader( - new InputStreamReader(getClass().getClassLoader() - .getResourceAsStream("mime.types"), - Charset.forName("UTF-8"))); - final Builder<String, String> builder = ImmutableListMultimap.builder(); - String line = reader.readLine(); - while (line != null) { - final Matcher matcher = mapLine.matcher(line); - if (matcher.matches() && matcher.groupCount() >= 2) { - builder.putAll(matcher.group(1), space.split(matcher.group(2))); - } - line = reader.readLine(); - } - map = builder.build(); - logger.fine(MessageFormat.format( - "Read {0} lines from the mime.types file, parsed {1} mappings", - reader.getLineNumber(), map.size())); - reader.close(); - } - - public ImmutableCollection<String> getExtensions(final String mimeType) { - return map.get(mimeType); - } - - public Optional<String> getFirstExtension(final String mimeType) { - final ImmutableCollection<String> extensions = map.get(mimeType); - if (!extensions.isEmpty()) - return Optional.of(extensions.iterator().next()); - else - return Optional.absent(); - } - - public String addExtension(final String plainFileName, final String mimeType) { - final Optional<String> extension = getFirstExtension(mimeType); - if (extension.isPresent()) - return plainFileName.concat(".").concat(extension.get()); - else - return plainFileName; - } - - private static FileExtensionMap instance; - - public static FileExtensionMap getInstance() { - if (instance == null) { - try { - instance = new FileExtensionMap(); - } catch (final IOException e) { - throw Throwables.propagate(e); - } - } - return instance; - } - -} diff --git a/src/main/java/info/textgrid/services/aggregator/tree/IAggregation.java b/src/main/java/info/textgrid/services/aggregator/tree/IAggregation.java deleted file mode 100644 index 4a34da128e8f1c4f17cc6f4cf1a113550c10ab22..0000000000000000000000000000000000000000 --- a/src/main/java/info/textgrid/services/aggregator/tree/IAggregation.java +++ /dev/null @@ -1,9 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import com.google.common.collect.ImmutableList; - -public interface IAggregation extends IAggregationEntry { - - public abstract ImmutableList<? extends IAggregationEntry> getChildren(); - -} \ No newline at end of file diff --git a/src/main/java/info/textgrid/services/aggregator/tree/IAggregationEntry.java b/src/main/java/info/textgrid/services/aggregator/tree/IAggregationEntry.java deleted file mode 100644 index 278dcb96724c6062affa0ddbfea9248ccc70c05d..0000000000000000000000000000000000000000 --- a/src/main/java/info/textgrid/services/aggregator/tree/IAggregationEntry.java +++ /dev/null @@ -1,17 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import info.textgrid.namespaces.metadata.core._2010.ObjectType; - -import java.net.URI; - -import com.google.common.base.Optional; - -public interface IAggregationEntry { - - public abstract Optional<? extends IAggregation> getParent(); - - public abstract ObjectType getMetadata(); - - public abstract URI getTextGridURI(); - -} \ No newline at end of file diff --git a/src/main/java/info/textgrid/services/aggregator/tree/IFilenamePolicy.java b/src/main/java/info/textgrid/services/aggregator/tree/IFilenamePolicy.java deleted file mode 100644 index 48ea557c55f0a971983f1e7bbaa722384d53d626..0000000000000000000000000000000000000000 --- a/src/main/java/info/textgrid/services/aggregator/tree/IFilenamePolicy.java +++ /dev/null @@ -1,63 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import info.textgrid.namespaces.metadata.core._2010.ObjectType; - -import java.net.URI; - -import com.google.common.base.Optional; - -/** - * A filename policy offers a way to generate file names from entries in - * aggregation structures, from TextGrid metadata, or from simple strings. - * - * <p> - * Implementors should make sure that the same instance of an - * {@link IFilenamePolicy} implementation always returns the same filename - * candidate on the same arguments. Filename stability across different - * policy instances is not required. - * </p> - * - * @see DefaultFilenamePolicy default implementation - * @author vitt - * - */ -public interface IFilenamePolicy { - - /** - * Creates a valid file name part for the given string. This may involve - * replacing or removing parts of the string, shortening the string etc. - * - * @param source - * The string that should be translated - * @return A string that conforms to the rules of this policy - */ - public String translate(final String source); - - /** - * Generates a file name candidate for the object described by the given - * metadata. - * - * @param object - * The object with the metadata for which to generate a filename - * @param asParent - * If true, the generated file name should be the parent for a - * different filename. Implementors might, e.g., want to leave - * out an extension. - * @return The generated filename. - */ - public String getFilename(final ObjectType object, final boolean asParent); - - /** - * Generates a file name for the aggregation entry described by the given - * metadata. - * - * @see #getFilename(ObjectType, boolean) - */ - public URI getFilename(final IAggregationEntry entry, final boolean asParent); - - /** - * Tries to generate a base URI for the given aggregation entry. - */ - public abstract Optional<URI> getBase(final IAggregationEntry entry); - -} diff --git a/src/main/resources/mime.types b/src/main/resources/mime.types deleted file mode 100644 index a284d4c3b0f82c54ffb22a143921e4af2470f5ce..0000000000000000000000000000000000000000 --- a/src/main/resources/mime.types +++ /dev/null @@ -1,846 +0,0 @@ -############################################################################### -# -# MIME-TYPES and the extensions that represent them -# -# The format of this file is a MIME type on the left and zero or more -# filename extensions on the right. Programs using this file will map -# files ending with those extensions to the associated type. -# -# This file has been taken from Debian's "mime-support" package and -# adapted to TextGrid use. -# -# Note: Compression schemes like "gzip", "bzip", and "compress" are not -# actually "mime-types". They are "encodings" and hence must _not_ have -# entries in this file to map their extensions. The "mime-type" of an -# encoded file refers to the type of data that has been encoded, not the -# type of encoding. -# -############################################################################### - -# TextGrid specific types first -text/tg.aggregation+xml aggregation # Aggregation -text/tg.edition+tg.aggregation+xml edition # Edition -text/tg.collection+tg.aggregation+xml collection # Kollektion -text/xsd+xml xsd # XML Schema -text/css css # Cascading Stylesheet (CSS) -text/plain txt # Plain Text -text/tg.imex+xml imex # Import-/Export-Mapping -application/zip zip # ZIP-Archiv -text/tg.projectfile+xml tgp # Project Configuration -unknown/unknown tgo # Unknown -image/x-unknown null # Image -text/tg.work+xml work # Work -text/linkeditorlinkedfile tgl # Text-Bild-Link-Objekt -image/jpeg jpg # JPEG-Bild -image/tiff tiff # TIFF-Bild -image/png png # PNG-Bild -image/gif gif # GIF image -text/tg.workflow+xml tgwf # TextGrid-Workflow-Dokument -text/gwdl.workflow+xml gwdl # TextGrid-Workflow-Dokument (GWDL) -text/tg.servicedescription+xml service # TextGrid-Dienstebeschreibung -application/xml-dtd dtd # DTD -text/xml xml # XML Document -text/xml+xslt xsl # XSLT Stylesheet - - -# Generic stuff -application/activemessage -application/andrew-inset ez -application/annodex anx -application/applefile -application/atom+xml atom -application/atomcat+xml atomcat -application/atomicmail -application/atomserv+xml atomsrv -application/batch-SMTP -application/bbolin lin -application/beep+xml -application/cals-1840 -application/commonground -application/cu-seeme cu -application/cybercash -application/davmount+xml davmount -application/dca-rft -application/dec-dx -application/dicom dcm -application/docbook+xml -application/dsptype tsp -application/dvcs -application/ecmascript es -application/edi-consent -application/edi-x12 -application/edifact -application/eshop -application/font-tdpfr -application/futuresplash spl -application/ghostview -application/hta hta -application/http -application/hyperstudio -application/iges -application/index -application/index.cmd -application/index.obj -application/index.response -application/index.vnd -application/iotp -application/ipp -application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -application/m3g m3g -application/mac-binhex40 hqx -application/mac-compactpro cpt -application/macwriteii -application/marc -application/mathematica nb nbp -application/mbox mbox -application/ms-tnef -application/msaccess mdb -application/msword doc dot -application/mxf mxf -application/news-message-id -application/news-transmission -application/ocsp-request -application/ocsp-response -application/octet-stream bin -application/oda oda -application/ogg ogx -application/onenote one onetoc2 onetmp onepkg -application/parityfec -application/pdf pdf -application/pgp-encrypted pgp -application/pgp-keys key -application/pgp-signature sig -application/pics-rules prf -application/pkcs10 -application/pkcs7-mime -application/pkcs7-signature -application/pkix-cert -application/pkix-crl -application/pkixcmp -application/postscript ps ai eps epsi epsf eps2 eps3 -application/prs.alvestrand.titrax-sheet -application/prs.cww -application/prs.nprend -application/qsig -application/rar rar -application/rdf+xml rdf -application/remote-printing -application/riscos -application/rtf rtf -application/sdp -application/set-payment -application/set-payment-initiation -application/set-registration -application/set-registration-initiation -application/sgml -application/sgml-open-catalog -application/sieve -application/sla stl -application/slate -application/smil smi smil -application/timestamp-query -application/timestamp-reply -application/vemmi -application/whoispp-query -application/whoispp-response -application/wita -application/x400-bp -application/xhtml+xml xhtml xht -application/xml xml xsl xsd -application/xml-dtd -application/xml-external-parsed-entity -application/xspf+xml xspf -application/zip zip -application/vnd.3M.Post-it-Notes -application/vnd.accpac.simply.aso -application/vnd.accpac.simply.imp -application/vnd.acucobol -application/vnd.aether.imp -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation -application/vnd.anser-web-funds-transfer-initiation -application/vnd.audiograph -application/vnd.bmi -application/vnd.businessobjects -application/vnd.canon-cpdl -application/vnd.canon-lips -application/vnd.cinderella cdy -application/vnd.claymore -application/vnd.commerce-battelle -application/vnd.commonspace -application/vnd.comsocaller -application/vnd.contact.cmsg -application/vnd.cosmocaller -application/vnd.ctc-posml -application/vnd.cups-postscript -application/vnd.cups-raster -application/vnd.cups-raw -application/vnd.cybank -application/vnd.dna -application/vnd.dpgraph -application/vnd.dxr -application/vnd.ecdis-update -application/vnd.ecowin.chart -application/vnd.ecowin.filerequest -application/vnd.ecowin.fileupdate -application/vnd.ecowin.series -application/vnd.ecowin.seriesrequest -application/vnd.ecowin.seriesupdate -application/vnd.enliven -application/vnd.epson.esf -application/vnd.epson.msf -application/vnd.epson.quickanime -application/vnd.epson.salt -application/vnd.epson.ssf -application/vnd.ericsson.quickcall -application/vnd.eudora.data -application/vnd.fdf -application/vnd.ffsns -application/vnd.flographit -application/vnd.framemaker -application/vnd.fsc.weblaunch -application/vnd.fujitsu.oasys -application/vnd.fujitsu.oasys2 -application/vnd.fujitsu.oasys3 -application/vnd.fujitsu.oasysgp -application/vnd.fujitsu.oasysprs -application/vnd.fujixerox.ddd -application/vnd.fujixerox.docuworks -application/vnd.fujixerox.docuworks.binder -application/vnd.fut-misnet -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq -application/vnd.groove-account -application/vnd.groove-identity-message -application/vnd.groove-injector -application/vnd.groove-tool-message -application/vnd.groove-tool-template -application/vnd.groove-vcard -application/vnd.hhe.lesson-player -application/vnd.hp-HPGL -application/vnd.hp-PCL -application/vnd.hp-PCLXL -application/vnd.hp-hpid -application/vnd.hp-hps -application/vnd.httphone -application/vnd.hzn-3d-crossword -application/vnd.ibm.MiniPay -application/vnd.ibm.afplinedata -application/vnd.ibm.modcap -application/vnd.informix-visionary -application/vnd.intercon.formnet -application/vnd.intertrust.digibox -application/vnd.intertrust.nncp -application/vnd.intu.qbo -application/vnd.intu.qfx -application/vnd.irepository.package+xml -application/vnd.is-xpr -application/vnd.japannet-directory-service -application/vnd.japannet-jpnstore-wakeup -application/vnd.japannet-payment-wakeup -application/vnd.japannet-registration -application/vnd.japannet-registration-wakeup -application/vnd.japannet-setstore-wakeup -application/vnd.japannet-verification -application/vnd.japannet-verification-wakeup -application/vnd.koan -application/vnd.lotus-1-2-3 -application/vnd.lotus-approach -application/vnd.lotus-freelance -application/vnd.lotus-notes -application/vnd.lotus-organizer -application/vnd.lotus-screencam -application/vnd.lotus-wordpro -application/vnd.mcd -application/vnd.mediastation.cdkey -application/vnd.meridian-slingshot -application/vnd.mif -application/vnd.minisoft-hp3000-save -application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf -application/vnd.mobius.dis -application/vnd.mobius.msl -application/vnd.mobius.plc -application/vnd.mobius.txf -application/vnd.motorola.flexsuite -application/vnd.motorola.flexsuite.adsi -application/vnd.motorola.flexsuite.fis -application/vnd.motorola.flexsuite.gotap -application/vnd.motorola.flexsuite.kmr -application/vnd.motorola.flexsuite.ttc -application/vnd.motorola.flexsuite.wem -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry -application/vnd.ms-asf -application/vnd.ms-excel xls xlb xlt -application/vnd.ms-excel.addin.macroEnabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb -application/vnd.ms-excel.sheet.macroEnabled.12 xlsm -application/vnd.ms-excel.template.macroEnabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-lrm -application/vnd.ms-officetheme thmx -application/vnd.ms-pki.seccat cat -#application/vnd.ms-pki.stl stl -application/vnd.ms-powerpoint ppt pps -application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm -application/vnd.ms-powerpoint.slide.macroEnabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm -application/vnd.ms-powerpoint.template.macroEnabled.12 potm -application/vnd.ms-project -application/vnd.ms-tnef -application/vnd.ms-word.document.macroEnabled.12 docm -application/vnd.ms-word.template.macroEnabled.12 dotm -application/vnd.ms-works -application/vnd.mseq -application/vnd.msign -application/vnd.music-niff -application/vnd.musician -application/vnd.netfpx -application/vnd.noblenet-directory -application/vnd.noblenet-sealer -application/vnd.noblenet-web -application/vnd.novadigm.EDM -application/vnd.novadigm.EDX -application/vnd.novadigm.EXT -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -application/vnd.openxmlformats-officedocument.presentationml.template potx -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -application/vnd.osa.netdeploy -application/vnd.palm -application/vnd.pg.format -application/vnd.pg.osasli -application/vnd.powerbuilder6 -application/vnd.powerbuilder6-s -application/vnd.powerbuilder7 -application/vnd.powerbuilder7-s -application/vnd.powerbuilder75 -application/vnd.powerbuilder75-s -application/vnd.previewsystems.box -application/vnd.publishare-delta-tree -application/vnd.pvi.ptid1 -application/vnd.pwg-xhtml-print+xml -application/vnd.rapid -application/vnd.rim.cod cod -application/vnd.s3sms -application/vnd.seemail -application/vnd.shana.informed.formdata -application/vnd.shana.informed.formtemplate -application/vnd.shana.informed.interchange -application/vnd.shana.informed.package -application/vnd.smaf mmf -application/vnd.sss-cod -application/vnd.sss-dtf -application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.chart sds -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math sdf -application/vnd.stardivision.writer sdw -application/vnd.stardivision.writer-global sgl -application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -application/vnd.svd -application/vnd.swiftview-ics -application/vnd.symbian.install sis -application/vnd.tcpdump.pcap cap pcap -application/vnd.triscape.mxs -application/vnd.trueapp -application/vnd.truedoc -application/vnd.tve-trigger -application/vnd.ufdl -application/vnd.uplanet.alert -application/vnd.uplanet.alert-wbxml -application/vnd.uplanet.bearer-choice -application/vnd.uplanet.bearer-choice-wbxml -application/vnd.uplanet.cacheop -application/vnd.uplanet.cacheop-wbxml -application/vnd.uplanet.channel -application/vnd.uplanet.channel-wbxml -application/vnd.uplanet.list -application/vnd.uplanet.list-wbxml -application/vnd.uplanet.listcmd -application/vnd.uplanet.listcmd-wbxml -application/vnd.uplanet.signal -application/vnd.vcx -application/vnd.vectorworks -application/vnd.vidsoft.vidconference -application/vnd.visio vsd -application/vnd.vividence.scriptfile -application/vnd.wap.sic -application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo -application/vnd.wordperfect wpd -application/vnd.wordperfect5.1 wp5 -application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf -application/vnd.xara -application/vnd.xfdl -application/vnd.yellowriver-custom-menu -application/x-123 wk -application/x-7z-compressed 7z -application/x-abiword abw -application/x-apple-diskimage dmg -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-cab cab -application/x-cbr cbr -application/x-cbz cbz -application/x-cdf cdf cda -application/x-cdlink vcd -application/x-chess-pgn pgn -application/x-comsol mph -application/x-core -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-director dcr dir dxr -application/x-dms dms -application/x-doom wad -application/x-dvi dvi -application/x-executable -application/x-font pfa pfb gsf pcf pcf.Z -application/x-font-woff woff -application/x-freemind mm -application/x-futuresplash spl -application/x-ganttproject gan -application/x-gnumeric gnumeric -application/x-go-sgf sgf -application/x-graphing-calculator gcf -application/x-gtar gtar -application/x-gtar-compressed tgz taz -application/x-hdf hdf -#application/x-httpd-eruby rhtml -#application/x-httpd-php phtml pht php -#application/x-httpd-php-source phps -#application/x-httpd-php3 php3 -#application/x-httpd-php3-preprocessed php3p -#application/x-httpd-php4 php4 -#application/x-httpd-php5 php5 -application/x-hwp hwp -application/x-ica ica -application/x-info info -application/x-internet-signup ins isp -application/x-iphone iii -application/x-iso9660-image iso -application/x-jam jam -application/x-java-applet -application/x-java-bean -application/x-java-jnlp-file jnlp -application/x-jmol jmz -application/x-kchart chrt -application/x-kdelnk -application/x-killustrator kil -application/x-koan skp skd skt skm -application/x-kpresenter kpr kpt -application/x-kspread ksp -application/x-kword kwd kwt -application/x-latex latex -application/x-lha lha -application/x-lyx lyx -application/x-lzh lzh -application/x-lzx lzx -application/x-maker frm maker frame fm fb book fbdoc -application/x-md5 md5 -application/x-mif mif -application/x-mpegURL m3u8 -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-msdos-program com exe bat dll -application/x-msi msi -application/x-netcdf nc -application/x-ns-proxy-autoconfig pac dat -application/x-nwc nwc -application/x-object o -application/x-oz-application oza -application/x-pkcs7-certreqresp p7r -application/x-pkcs7-crl crl -application/x-python-code pyc pyo -application/x-qgis qgs shp shx -application/x-quicktimeplayer qtl -application/x-rdp rdp -application/x-redhat-package-manager rpm -application/x-rss+xml rss -application/x-ruby rb -application/x-rx -application/x-scilab sci sce -application/x-scilab-xcos xcos -application/x-sh sh -application/x-sha1 sha1 -application/x-shar shar -application/x-shellscript -application/x-shockwave-flash swf swfl -application/x-silverlight scr -application/x-sql sql -application/x-stuffit sit sitx -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-tar tar -application/x-tcl tcl -application/x-tex-gf gf -application/x-tex-pk pk -application/x-texinfo texinfo texi -application/x-trash ~ % bak old sik -application/x-troff t tr roff -application/x-troff-man man -application/x-troff-me me -application/x-troff-ms ms -application/x-ustar ustar -application/x-videolan -application/x-wais-source src -application/x-wingz wz -application/x-x509-ca-cert crt -application/x-xcf xcf -application/x-xfig fig -application/x-xpinstall xpi - -audio/32kadpcm -audio/3gpp -audio/amr amr -audio/amr-wb awb -audio/amr amr -audio/amr-wb awb -audio/annodex axa -audio/basic au snd -audio/csound csd orc sco -audio/flac flac -audio/g.722.1 -audio/l16 -audio/midi mid midi kar -audio/mp4a-latm -audio/mpa-robust -audio/mpeg mpga mpega mp2 mp3 m4a -audio/mpegurl m3u -audio/ogg oga ogg spx -audio/parityfec -audio/prs.sid sid -audio/telephone-event -audio/tone -audio/vnd.cisco.nse -audio/vnd.cns.anp1 -audio/vnd.cns.inf1 -audio/vnd.digital-winds -audio/vnd.everad.plj -audio/vnd.lucent.voice -audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 -audio/vnd.nuera.ecelp7470 -audio/vnd.nuera.ecelp9600 -audio/vnd.octel.sbc -audio/vnd.qcelp -audio/vnd.rhetorex.32kadpcm -audio/vnd.vmx.cvsd -audio/x-aiff aif aiff aifc -audio/x-gsm gsm -audio/x-mpegurl m3u -audio/x-ms-wma wma -audio/x-ms-wax wax -audio/x-pn-realaudio-plugin -audio/x-pn-realaudio ra rm ram -audio/x-realaudio ra -audio/x-scpls pls -audio/x-sd2 sd2 -audio/x-wav wav - -chemical/x-alchemy alc -chemical/x-cache cac cache -chemical/x-cache-csf csf -chemical/x-cactvs-binary cbin cascii ctab -chemical/x-cdx cdx -chemical/x-cerius cer -chemical/x-chem3d c3d -chemical/x-chemdraw chm -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-compass cpa -chemical/x-crossfire bsd -chemical/x-csml csml csm -chemical/x-ctx ctx -chemical/x-cxf cxf cef -#chemical/x-daylight-smiles smi -chemical/x-embl-dl-nucleotide emb embl -chemical/x-galactic-spc spc -chemical/x-gamess-input inp gam gamin -chemical/x-gaussian-checkpoint fch fchk -chemical/x-gaussian-cube cub -chemical/x-gaussian-input gau gjc gjf -chemical/x-gaussian-log gal -chemical/x-gcg8-sequence gcg -chemical/x-genbank gen -chemical/x-hin hin -chemical/x-isostar istr ist -chemical/x-jcamp-dx jdx dx -chemical/x-kinemage kin -chemical/x-macmolecule mcm -chemical/x-macromodel-input mmd mmod -chemical/x-mdl-molfile mol -chemical/x-mdl-rdfile rd -chemical/x-mdl-rxnfile rxn -chemical/x-mdl-sdfile sd sdf -chemical/x-mdl-tgf tgf -#chemical/x-mif mif -chemical/x-mmcif mcif -chemical/x-mol2 mol2 -chemical/x-molconn-Z b -chemical/x-mopac-graph gpt -chemical/x-mopac-input mop mopcrt mpc zmt -chemical/x-mopac-out moo -chemical/x-mopac-vib mvb -chemical/x-ncbi-asn1 asn -chemical/x-ncbi-asn1-ascii prt ent -chemical/x-ncbi-asn1-binary val aso -chemical/x-ncbi-asn1-spec asn -chemical/x-pdb pdb ent -chemical/x-rosdal ros -chemical/x-swissprot sw -chemical/x-vamas-iso14976 vms -chemical/x-vmd vmd -chemical/x-xtel xtel -chemical/x-xyz xyz - -image/cgm -image/g3fax -image/gif gif -image/ief ief -image/jpeg jpeg jpg jpe -image/naplps -image/pcx pcx -image/png png -image/prs.btif -image/prs.pti -image/svg+xml svg svgz -image/tiff tiff tif -image/vnd.cns.inf2 -image/vnd.djvu djvu djv -image/vnd.dwg -image/vnd.dxf -image/vnd.fastbidsheet -image/vnd.fpx -image/vnd.fst -image/vnd.fujixerox.edmics-mmr -image/vnd.fujixerox.edmics-rlc -image/vnd.microsoft.icon ico -image/vnd.mix -image/vnd.net-fpx -image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff -image/x-canon-cr2 cr2 -image/x-canon-crw crw -image/x-cmu-raster ras -image/x-coreldraw cdr -image/x-coreldrawpattern pat -image/x-coreldrawtemplate cdt -image/x-corelphotopaint cpt -image/x-epson-erf erf -image/x-icon -image/x-jg art -image/x-jng jng -image/x-ms-bmp bmp -image/x-nikon-nef nef -image/x-olympus-orf orf -image/x-photoshop psd -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd - -inode/chardevice -inode/blockdevice -inode/directory-locked -inode/directory -inode/fifo -inode/socket - -message/delivery-status -message/disposition-notification -message/external-body -message/http -message/s-http -message/news -message/partial -message/rfc822 eml - -model/iges igs iges -model/mesh msh mesh silo -model/vnd.dwf -model/vnd.flatland.3dml -model/vnd.gdl -model/vnd.gs-gdl -model/vnd.gtw -model/vnd.mts -model/vnd.vtu -model/vrml wrl vrml -model/x3d+vrml x3dv -model/x3d+xml x3d -model/x3d+binary x3db - -multipart/alternative -multipart/appledouble -multipart/byteranges -multipart/digest -multipart/encrypted -multipart/form-data -multipart/header-set -multipart/mixed -multipart/parallel -multipart/related -multipart/report -multipart/signed -multipart/voice-message - -text/cache-manifest appcache -text/calendar ics icz -text/css css -text/csv csv -text/directory -text/english -text/enriched -text/h323 323 -text/html html htm shtml -text/iuls uls -text/mathml mml -text/parityfec -text/plain asc txt text pot brf srt -text/prs.lines.tag -text/rfc822-headers -text/richtext rtx -text/rtf -text/scriptlet sct wsc -text/t140 -text/texmacs tm -text/tab-separated-values tsv -text/uri-list -text/vnd.abc -text/vnd.curl -text/vnd.DMClientScript -text/vnd.flatland.3dml -text/vnd.fly -text/vnd.fmi.flexstor -text/vnd.in3d.3dml -text/vnd.in3d.spot -text/vnd.IPTC.NewsML -text/vnd.IPTC.NITF -text/vnd.latex-z -text/vnd.motorola.reflex -text/vnd.ms-mediapackage -text/vnd.sun.j2me.app-descriptor jad -text/vnd.wap.si -text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-bibtex bib -text/x-boo boo -text/x-c++hdr h++ hpp hxx hh -text/x-c++src c++ cpp cxx cc -text/x-chdr h -text/x-component htc -text/x-crontab -text/x-csh csh -text/x-csrc c -text/x-dsrc d -text/x-diff diff patch -text/x-haskell hs -text/x-java java -text/x-lilypond ly -text/x-literate-haskell lhs -text/x-makefile -text/x-moc moc -text/x-pascal p pas -text/x-pcs-gcd gcd -text/x-perl pl pm -text/x-python py -text/x-scala scala -text/x-server-parsed-html -text/x-setext etx -text/x-sfv sfv -text/x-sh sh -text/x-tcl tcl tk -text/x-tex tex ltx sty cls -text/x-vcalendar vcs -text/x-vcard vcf - -video/3gpp 3gp -video/annodex axv -video/dl dl -video/dv dif dv -video/fli fli -video/gl gl -video/mpeg mpeg mpg mpe -video/MP2T ts -video/mp4 mp4 -video/quicktime qt mov -video/mp4v-es -video/ogg ogv -video/parityfec -video/pointer -video/webm webm -video/vnd.fvt -video/vnd.motorola.video -video/vnd.motorola.videop -video/vnd.mpegurl mxu -video/vnd.mts -video/vnd.nokia.interleaved-multimedia -video/vnd.vivo -video/x-flv flv -video/x-la-asf lsf lsx -video/x-mng mng -video/x-ms-asf asf asx -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -video/x-matroska mpv mkv - -x-conference/x-cooltalk ice - -x-epoc/x-sisx-app sisx -x-world/x-vrml vrm vrml wrl diff --git a/src/test/java/info/textgrid/services/aggregator/tree/DefaultFilenamePolicyTest.java b/src/test/java/info/textgrid/services/aggregator/tree/DefaultFilenamePolicyTest.java deleted file mode 100644 index c9e328ecd70b43d77da64e197cc9c45eb5372c15..0000000000000000000000000000000000000000 --- a/src/test/java/info/textgrid/services/aggregator/tree/DefaultFilenamePolicyTest.java +++ /dev/null @@ -1,98 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import info.textgrid.namespaces.metadata.core._2010.GeneratedType; -import info.textgrid.namespaces.metadata.core._2010.GeneratedType.TextgridUri; -import info.textgrid.namespaces.metadata.core._2010.GenericType; -import info.textgrid.namespaces.metadata.core._2010.ObjectType; -import info.textgrid.namespaces.metadata.core._2010.ProvidedType; - -import java.net.URI; -import java.util.regex.Pattern; - -import org.junit.Before; -import org.junit.Test; - -import com.google.common.base.Optional; - -public class DefaultFilenamePolicyTest { - - private static final String AGGREGATION_XML = "text/tg.aggregation+xml"; - private static final String XML = "text/xml"; - private Aggregation super1; - private Aggregation sub; - private AggregationEntry xample1; - private DefaultFilenamePolicy policy; - private DefaultMetaFilenamePolicy metaPolicy; - - @Before - public void setUp() throws Exception { - final ObjectType super1MD = createSimpleMetadata("Ãœber Aggregation", AGGREGATION_XML, "textgrid:super1"); - final ObjectType subMD = createSimpleMetadata("Sub", AGGREGATION_XML, "textgrid:sub"); - final ObjectType xample1MD = createSimpleMetadata("Test Title", XML, "textgrid:xample1"); - - super1 = new Aggregation(super1MD); - sub = new Aggregation(subMD, super1); - xample1 = new AggregationEntry(xample1MD, sub); - - policy = new DefaultFilenamePolicy(); - metaPolicy = new DefaultMetaFilenamePolicy(policy); - - } - - private ObjectType createSimpleMetadata(final String title, final String format, final String uri) { - final ObjectType metadata = new ObjectType(); - final GenericType generic = new GenericType(); - final GeneratedType generated = new GeneratedType(); - final ProvidedType provided = new ProvidedType(); - generic.setGenerated(generated);; - generic.setProvided(provided); - provided.getTitle().add(title); - provided.setFormat(format); - final TextgridUri textgridUri = new TextgridUri(); - textgridUri.setValue(uri); - generated.setTextgridUri(textgridUri); - metadata.setGeneric(generic); - - return metadata; - } - - @Test - public void testTranslate() { - final Pattern pattern = Pattern.compile("[a-zA-Z0-9.!~_-]+"); - final String[] filenames = { - "Märchen", - "MÄRCHEN", - "Lustige Märchen", - "3½ LuÅ¿tige Märchen", - "ἑλληνικὴ γλῶσσα", - "اللغة العربية", - "國語羅馬å—", - "देवनागरी", - }; - for (final String filename : filenames) { - final String safename = policy.translate(filename); - System.out.println(filename + " -> " + safename); - assertTrue(safename + " (from " + filename + ") is not safe", pattern.matcher(safename).matches()); - } - } - - @Test - public void testGetFilenameforMetadata() { - assertEquals("Test_Title.xample1.xml", policy.getFilename(xample1.getMetadata(), false)); - assertEquals("Ueber_Aggregation.super1.aggregation", policy.getFilename(super1.getMetadata(), false)); - assertEquals("Ueber_Aggregation.super1/", policy.getFilename(super1.getMetadata(), true)); - } - - @Test - public void testGetFilenameforEntry() { - assertEquals(URI.create("Ueber_Aggregation.super1/Sub.sub/Test_Title.xample1.xml"), policy.getFilename(xample1, false)); - } - - @Test - public void testGetBase() { - assertEquals(Optional.of(URI.create("Ueber_Aggregation.super1/Sub.sub/")), policy.getBase(xample1)); - } - -} diff --git a/src/test/java/info/textgrid/services/aggregator/tree/FileExtensionMapTest.java b/src/test/java/info/textgrid/services/aggregator/tree/FileExtensionMapTest.java deleted file mode 100644 index dc7d245a442c1ea7f5d07b9e2368271510c98366..0000000000000000000000000000000000000000 --- a/src/test/java/info/textgrid/services/aggregator/tree/FileExtensionMapTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package info.textgrid.services.aggregator.tree; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import com.google.common.collect.ImmutableCollection; -import com.google.common.collect.ImmutableList; - -public class FileExtensionMapTest { - - private static final String APPLICATION_XHTML_XML = "application/xhtml+xml"; - private FileExtensionMap ext; - - @Before - public void setUp() throws Exception { - ext = FileExtensionMap.getInstance(); - } - - @Test - public void testGetExtensions() { - final ImmutableCollection<String> xhtml = ext - .getExtensions(APPLICATION_XHTML_XML); - Assert.assertFalse("No extensions for xhtml?", xhtml.isEmpty()); - Assert.assertEquals("Wrong extensions for XHTML", - ImmutableList.of("xhtml", "xht"), xhtml); - } - - @Test - public void testTextGridTypes() { - Assert.assertEquals("aggregation", ext.getFirstExtension("text/tg.aggregation+xml").orNull()); - } - - @Test - public void testGetFirstExtension() { - Assert.assertTrue("No first extension for XHTML", ext - .getFirstExtension(APPLICATION_XHTML_XML).isPresent()); - Assert.assertEquals("xhtml", - ext.getFirstExtension(APPLICATION_XHTML_XML).get()); - } - - @Test - public void testAddExtension() { - Assert.assertEquals("test.xhtml", - ext.addExtension("test", APPLICATION_XHTML_XML)); - } - -}