Package gov.lanl.adore.djatoka.util

Examples of gov.lanl.adore.djatoka.util.ImageRecord


     */
    public final ImageRecord getMetadata(ImageRecord r) throws DjatokaException {
    if (r == null)
            throw new DjatokaException("ImageRecord is null");
        if (r.getImageFile() == null && r.getObject() != null) {
            ImageRecord ir = getMetadata(getStreamFromObject(r.getObject()));
            ir.setObject(r.getObject());
            return ir;
        }
        File f = new File(r.getImageFile());
    if (!f.exists())
            throw new DjatokaException("Image Does Not Exist");
View Full Code Here


        return null;
    }

    private final ArrayList<Double> getRegionMetadata(InputStream input,
            DjatokaDecodeParam params) throws DjatokaException {
        ImageRecord r = getMetadata(input);
        return getRegionMetadata(r, params);
    }
View Full Code Here

        return getRegionMetadata(r, params);
    }

    private final ArrayList<Double> getRegionMetadata(String input,
            DjatokaDecodeParam params) throws DjatokaException {
        ImageRecord r = getMetadata(new ImageRecord(input));
        return getRegionMetadata(r, params);
    }
View Full Code Here

            }
            responseFormat = "text/plain";
            status = HttpServletResponse.SC_NOT_FOUND;
        } else {
            try {
                ImageRecord r = ReferentManager.getImageRecord(contextObject.getReferent());
                if (r != null) {
                    if (transformCheck && transform != null) {
                        HashMap<String, String> instProps = new HashMap<String, String>();
                        if (r.getInstProps() != null)
                            instProps.putAll(r.getInstProps());
                        if (contextObject.getRequesters().length > 0
                                && contextObject.getRequesters()[0]
                                        .getDescriptors().length > 0) {
                            String requester = contextObject.getRequesters()[0]
                                    .getDescriptors()[0].toString();
                            instProps.put(PROPS_REQUESTER, requester);
                        }
                        if (contextObject.getReferringEntities().length > 0
                                && contextObject.getReferringEntities()[0].getDescriptors().length > 0) {
                            instProps.put(PROPS_REFERRING_ENTITY,
                                    contextObject.getReferringEntities()[0].getDescriptors()[0].toString());
                        }
                        if (instProps.size() > 0) {
                            transform.setInstanceProps(instProps);
                        }
                        params.setTransform(transform);
                    }
                    if (!cacheTiles || !isCacheable(params)) {
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        extractorFactory.getDjatokaExtractorProcessorForFile(r.getImageFile()).extractImage(r.getImageFile(), baos, params, format);
                        bytes = baos.toByteArray();
                        baos.close();
                    } else {
                        String ext = getExtension(format);
                        String hash = getTileHash(r, params);
                        String file = tileCache.get(hash + ext);
                        File f;
                        if (file == null
                                || (file != null && !((f = new File(file)).exists() && f.length() > 0))) {
                            if (file != null) {
                                f = new File(file);
                                if (f.exists()) { // then implies f.length() == 0, which means f is corrupted.
                                    f.delete();
                                }
                                tileCache.remove(hash + ext);
                            } else {
                                tileCache.remove(hash + ext); // In case the cache dir was manually (externally) cleared, then assure tile file gets recreated.
                            }

                            if (getCacheDir() != null) {
                                f = File.createTempFile("cache" + hash.hashCode() + "-", "." + ext, new File(getCacheDir()));
                            } else {
                                f = File.createTempFile("cache" + hash.hashCode() + "-", "." + ext);
                            }
                            f.deleteOnExit();
                            file = f.getAbsolutePath();
                            extractorFactory.getDjatokaExtractorProcessorForFile(r.getImageFile()).extractImage(r.getImageFile(), file, params, format);
                            if (tileCache.get(hash + ext) == null) {
                                tileCache.put(hash + ext, file);
                                bytes = IOUtils.getBytesFromFile(f);
                                logger.debug("makingTile: " + file + " " + bytes.length + " params: " + params);
                            } else {
View Full Code Here

        String responseFormat = RESPONSE_TYPE;
        int status = HttpServletResponse.SC_OK;
        ByteArrayOutputStream baos =  new ByteArrayOutputStream();
        try {
            baos = new ByteArrayOutputStream();
            ImageRecord r = ReferentManager.getImageRecord(contextObject.getReferent());
            IExtract jp2 = extractorFactory.getExtractorInstanceForFile(r.getImageFile());
            r = jp2.getMetadata(r);
            StringBuffer sb = new StringBuffer();
            sb.append("{");
            sb.append("\n\"identifier\": \"" + r.getIdentifier() + "\",");
            sb.append("\n\"imagefile\": \"" + r.getImageFile() + "\",");
            sb.append("\n\"width\": \"" + r.getWidth() + "\",");
            sb.append("\n\"height\": \"" + r.getHeight() + "\",");
            sb.append("\n\"dwtLevels\": \"" + r.getDWTLevels() + "\",");
            sb.append("\n\"levels\": \"" + r.getLevels() + "\",");
            sb.append("\n\"compositingLayerCount\": \"" + r.getCompositingLayerCount() + "\",");
            if (r.getInstProps() != null) {
                //HashMap<String, String> props = r.getInstProps();
                sb.append("\n\"instProps\": {");
                String separator = "";
                for (Map.Entry<String, String> entry : r.getInstProps().entrySet()) {
                    sb.append(separator + "\n\t\"" + entry.getKey() + "\": \"" + entry.getValue() + "\"");
                    separator = ",";
                }
                sb.append("\n\t}");
            }
View Full Code Here

    int status = HttpServletResponse.SC_OK;
    ByteArrayOutputStream baos =  new ByteArrayOutputStream();
      try {
      baos = new ByteArrayOutputStream();
      IExtract jp2 = new KduExtractExe();
      ImageRecord r = ReferentManager.getImageRecord(contextObject.getReferent());
      String[] xml = jp2.getXMLBox(r);
      StringBuffer sb = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
            sb.append("<jp2:JP2XML xmlns:jp2=\"http://library.lanl.gov/2008-11/aDORe/JP2XML/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"  xsi:schemaLocation=\"http://library.lanl.gov/2008-11/aDORe/JP2XML/ http://purl.lanl.gov/aDORe/schemas/2008-11/JP2XML.xsd\"");           
            sb.append(" boxCount=\"" + ((xml != null) ? xml.length : 0) + "\">");
      if (xml != null) {
View Full Code Here

    String responseFormat = "application/jp2";;
    int status = HttpServletResponse.SC_OK;
    byte[] b = null;
      try {
      ImageRecord r = ReferentManager.getImageRecord(contextObject.getReferent());
      if (r != null && r.getImageFile() != null)
          b = IOUtils.getBytesFromFile(new File(r.getImageFile()));
      else if (r != null && r.getObject() != null) {
        if (r.getObject() instanceof byte[])
          b = (byte[]) r.getObject();
        else if (r.getObject() instanceof InputStream) {
          b = IOUtils.getByteArray((InputStream) r.getObject());
        }
      }
      if (b == null)
        throw new Exception("Unable to resolve resource");
    } catch (Exception e) {
View Full Code Here

        img.delete();
        img = jp2Local;
      } else {
        try {
          IExtract ex = new KduExtractExe();
          ex.getMetadata(new ImageRecord(uri.toString(), img.getAbsolutePath()));
        } catch (DjatokaException e) {
          throw new DjatokaException("Unknown JP2/JPX file format");
        }
      }
    } catch (Exception e) {
View Full Code Here

   * @param rftId identifier of the image to be resolved
   * @return ImageRecord instance containing resolvable metadata
   * @throws ResolverException
   */
  public ImageRecord getImageRecord(String rftId) throws ResolverException {
    ImageRecord ir = null;
    if (isResolvableURI(rftId)) {
      ir = getRemoteImage(rftId);
    } else {
      ir = getLocalImage(rftId);
    }
View Full Code Here

  private static boolean isResolvableURI(String rftId) {
    return (rftId.startsWith("http") || rftId.startsWith("file") || rftId.startsWith("ftp"));
  }
 
  private ImageRecord getLocalImage(String rftId) {
    ImageRecord ir = localImgs.get(rftId);
    if (ir == null) {
      Connection conn = null;
      Statement stmt = null;
      ResultSet rset = null;
      try {
        conn = dataSource.getConnection();
        stmt = conn.createStatement();
        rset = stmt.executeQuery(query.replace("\\i", rftId));
        if (rset.next()) {
          ir = new ImageRecord();
          ir.setIdentifier(rset.getString(FIELD_IDENTIFIER));
          ir.setImageFile(rset.getString(FIELD_IMAGEFILE));
        }
      } catch (SQLException e) {
        log.error(e, e);
      } finally {
        try {
View Full Code Here

TOP

Related Classes of gov.lanl.adore.djatoka.util.ImageRecord

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.