/** * Returns canonical link to a bitstream in the item. * * @param item The DSpace Item that the bitstream is part of * @param bitstream The bitstream to link to * @returns a String link to the bitstream */ private String makeBitstreamLink(Item item, Bitstream bitstream) { String name = bitstream.getName(); StringBuilder result = new StringBuilder(contextPath); result.append("/bitstream/item/").append(String.valueOf(item.getID())); // append name although it isn't strictly necessary try { if (name != null) { result.append("/").append(Util.encodeBitstreamName(name, "UTF-8")); } } catch (UnsupportedEncodingException uee) { // just ignore it, we don't have to have a pretty // name on the end of the url because the sequence id will // locate it. However it means that links in this file might // not work.... } result.append("?sequence=").append(String.valueOf(bitstream.getSequenceID())); return result.toString(); }
/** Add rights information. This attaches an href to the URL of the item's licence file */ protected void addRights() throws DSpaceSWORDException { try { // work our way up to the item List<Bundle> bundle2bitstreams = this.bitstream.getBundles(); if (bundle2bitstreams.isEmpty()) { log.error("Found orphaned bitstream: " + bitstream.getID()); throw new DSpaceSWORDException("Orphaned bitstream discovered"); } Bundle bundle = bundle2bitstreams.get(0); List<Item> items = bundle.getItems(); if (items.isEmpty()) { log.error("Found orphaned bundle: " + bundle.getID()); throw new DSpaceSWORDException("Orphaned bundle discovered"); } Item item = items.get(0); // now get the licence out of the item SWORDUrlManager urlManager = swordService.getUrlManager(); StringBuilder rightsString = new StringBuilder(); List<Bundle> lbundles = item.getBundles(); for (Bundle lbundle : lbundles) { if (!Constants.LICENSE_BUNDLE_NAME.equals(lbundle.getName())) { // skip non-license bundles continue; } List<Bitstream> bss = lbundle.getBitstreams(); for (Bitstream bs : bss) { String url = urlManager.getBitstreamUrl(bs); rightsString.append(url).append(" "); } } Rights rights = new Rights(); rights.setContent(rightsString.toString()); rights.setType(ContentType.TEXT); entry.setRights(rights); log.debug("Added rights entry to entity"); } catch (SQLException e) { log.error("caught exception: ", e); throw new DSpaceSWORDException(e); } }