Package org.apache.jackrabbit.core.value

Examples of org.apache.jackrabbit.core.value.BLOBFileValue


                        out.writeUTF(val.toString());
                        break;
                    }
                    // special handling required for binary value:
                    // spool binary value to file in blob store
                    BLOBFileValue blobVal = val.getBLOBFileValue();
                    long size = blobVal.getLength();
                    if (size < 0) {
                        log.warn("Blob has negative size. Potential loss of data. " +
                            "id={} idx={}", state.getId(), String.valueOf(i));
                        out.writeInt(0);
                        values[i] = InternalValue.create(new byte[0]);
                        blobVal.discard();
                    } else if (size > minBlobSize) {
                        out.writeInt(-1);
                        String blobId = state.getBlobId(i);
                        if (blobId == null) {
                            try {
                                InputStream in = blobVal.getStream();
                                try {
                                    blobId = blobStore.createId(state.getId(), i);
                                    blobStore.put(blobId, in, size);
                                    state.setBlobId(blobId, i);
                                } finally {
                                    try {
                                        in.close();
                                    } catch (IOException e) {
                                        // ignore
                                    }
                                }
                            } catch (Exception e) {
                                String msg = "Error while storing blob. id="
                                        + state.getId() + " idx=" + i + " size=" + size;
                                log.error(msg, e);
                                throw new IOException(msg);
                            }
                            try {
                                // replace value instance with value
                                // backed by resource in blob store and delete temp file
                                if (blobStore instanceof ResourceBasedBLOBStore) {
                                    values[i] = InternalValue.create(((ResourceBasedBLOBStore) blobStore).getResource(blobId));
                                } else {
                                    values[i] = InternalValue.create(blobStore.get(blobId));
                                }
                            } catch (Exception e) {
                                log.error("Error while reloading blob. truncating. id=" + state.getId() +
                                        " idx=" + i + " size=" + size, e);
                                values[i] = InternalValue.create(new byte[0]);
                            }
                            blobVal.discard();
                        }
                        // store id of blob as property value
                        out.writeUTF(blobId);   // value
                    } else {
                        // delete evt. blob
                        out.writeInt((int) size);
                        byte[] data = new byte[(int) size];
                        try {
                            InputStream in = blobVal.getStream();
                            try {
                                int pos = 0;
                                while (pos < size) {
                                    int n = in.read(data, pos, (int) size - pos);
                                    if (n < 0) {
                                        throw new EOFException();
                                    }
                                    pos += n;
                                }
                            } finally {
                                try {
                                    in.close();
                                } catch (IOException e) {
                                    // ignore
                                }
                            }
                        } catch (Exception e) {
                            String msg = "Error while storing blob. id="
                                    + state.getId() + " idx=" + i + " size=" + size;
                            log.error(msg, e);
                            throw new IOException(msg);
                        }
                        out.write(data, 0, data.length);
                        // replace value instance with value
                        // backed by resource in blob store and delete temp file
                        values[i] = InternalValue.create(data);
                        blobVal.discard();
                    }
                    break;
                case PropertyType.DOUBLE:
                    out.writeDouble(val.getDouble());
                    break;
View Full Code Here


            initParser();
        }

        InternalValue[] values = data.getValues();
        if (values.length > 0) {
            BLOBFileValue blob = (BLOBFileValue) values[0].internalValue();

            try {
                zis = new ZipInputStream(blob.getStream());
                ZipEntry ze = zis.getNextEntry();
                while (!ze.getName().equals("content.xml"))
                    ze = zis.getNextEntry();
                OOoContentHandler contentHandler = new OOoContentHandler();
                xmlReader.setContentHandler(contentHandler);
View Full Code Here

        InternalValue[] values = data.getValues();
        if (values.length > 0) {
            try {
                try {
                    BLOBFileValue blob =
                            (BLOBFileValue) values[0].internalValue();

                    SAXSource source =
                            new SAXSource(parser,
                                    new InputSource(blob.getStream()));
                    transformer.transform(source, result);

                    String text = parser.getContents();

                    Map result = new HashMap();
View Full Code Here

  public Map doFilter(PropertyState data, String encoding)
      throws RepositoryException {
    InternalValue[] values = data.getValues();

    if (values.length == 1) {
      BLOBFileValue blob = (BLOBFileValue) values[0].internalValue();

      try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        MsPowerPointListener listener = new MsPowerPointListener(baos);
        POIFSReader reader = new POIFSReader();
        reader.registerListener(listener);
        reader.read(blob.getStream());
        Map result = new HashMap();
        result.put(FieldNames.FULLTEXT, new InputStreamReader(
            new ByteArrayInputStream(baos.toByteArray())));
       
        return result;
View Full Code Here

            throws RepositoryException {

        InternalValue[] values = data.getValues();
        if (values.length > 0) {
            try {
                BLOBFileValue blob = (BLOBFileValue) values[0].internalValue();

                doc.remove(0, doc.getLength());
                rek.read(blob.getStream(), doc, 0);
                String text = doc.getText(0, doc.getLength());

                Map result = new HashMap();
                result.put(FieldNames.FULLTEXT, new StringReader(text));
                return result;
View Full Code Here

     * contain valid MS Word document.
     */
    public Map doFilter(PropertyState data, String encoding) throws RepositoryException {
        InternalValue[] values = data.getValues();
        if (values.length > 0) {
            BLOBFileValue blob = (BLOBFileValue) values[0].internalValue();
               
            try {
                WordExtractor  extractor = new WordExtractor();
               
                // This throws raw Exception - not nice
                String text = extractor.extractText(blob.getStream());         
               
                Map result = new HashMap();
                result.put(FieldNames.FULLTEXT, new StringReader(text));
                return result;
            }
View Full Code Here

     * contain valid MS Excel document.
     */
    public Map doFilter(PropertyState data, String encoding) throws RepositoryException {
        InternalValue[] values = data.getValues();
        if (values.length > 0) {
            BLOBFileValue blob = (BLOBFileValue) values[0].internalValue();
               
            try {
                CharArrayWriter writer = new CharArrayWriter();
   
                POIFSFileSystem fs = new POIFSFileSystem(blob.getStream());
                HSSFWorkbook workbook = new HSSFWorkbook(fs);
   
                for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
                    HSSFSheet sheet = workbook.getSheetAt(i);
   
View Full Code Here

     * contain valid PDF document.
     */
    public Map doFilter(PropertyState data, String encoding) throws RepositoryException {
        InternalValue[] values = data.getValues();
        if (values.length > 0) {
            BLOBFileValue blob = (BLOBFileValue) values[0].internalValue();
               
            try {
                PDFParser parser = new PDFParser(blob.getStream());
                parser.parse();
   
                PDDocument document = parser.getPDDocument();
   
                CharArrayWriter writer = new CharArrayWriter();
View Full Code Here

        InternalValue[] values = data.getValues();
        if (values.length > 0) {
            try {
                try {
                    BLOBFileValue blob = (BLOBFileValue) values[0].internalValue();
                    parser.parse(blob.getStream());
                    String text = parser.getContents();

                    Map result = new HashMap();
                    result.put(FieldNames.FULLTEXT, new StringReader(text));
                    return result;
View Full Code Here

                        out.writeUTF(val.toString());
                        break;
                    }
                    // special handling required for binary value:
                    // spool binary value to file in blob store
                    BLOBFileValue blobVal = val.getBLOBFileValue();
                    long size = blobVal.getLength();
                    if (size < 0) {
                        log.warn("Blob has negative size. Potential loss of data. " +
                            "id={} idx={}", state.getId(), String.valueOf(i));
                        out.writeInt(0);
                        values[i] = InternalValue.create(new byte[0]);
                        blobVal.discard();
                    } else if (size > minBlobSize) {
                        out.writeInt(-1);
                        String blobId = state.getBlobId(i);
                        if (blobId == null) {
                            try {
                                InputStream in = blobVal.getStream();
                                try {
                                    blobId = blobStore.createId(state.getId(), i);
                                    blobStore.put(blobId, in, size);
                                    state.setBlobId(blobId, i);
                                } finally {
                                    try {
                                        in.close();
                                    } catch (IOException e) {
                                        // ignore
                                    }
                                }
                            } catch (Exception e) {
                                String msg = "Error while storing blob. id="
                                        + state.getId() + " idx=" + i + " size=" + size;
                                log.error(msg, e);
                                throw new IOException(msg);
                            }
                            try {
                                // replace value instance with value
                                // backed by resource in blob store and delete temp file
                                if (blobStore instanceof ResourceBasedBLOBStore) {
                                    values[i] = InternalValue.create(((ResourceBasedBLOBStore) blobStore).getResource(blobId));
                                } else {
                                    values[i] = InternalValue.create(blobStore.get(blobId));
                                }
                            } catch (Exception e) {
                                log.error("Error while reloading blob. truncating. id=" + state.getId() +
                                        " idx=" + i + " size=" + size, e);
                                values[i] = InternalValue.create(new byte[0]);
                            }
                            blobVal.discard();
                        }
                        // store id of blob as property value
                        out.writeUTF(blobId);   // value
                    } else {
                        // delete evt. blob
                        out.writeInt((int) size);
                        byte[] data = new byte[(int) size];
                        try {
                            InputStream in = blobVal.getStream();
                            try {
                                int pos = 0;
                                while (pos < size) {
                                    int n = in.read(data, pos, (int) size - pos);
                                    if (n < 0) {
                                        throw new EOFException();
                                    }
                                    pos += n;
                                }
                            } finally {
                                try {
                                    in.close();
                                } catch (IOException e) {
                                    // ignore
                                }
                            }
                        } catch (Exception e) {
                            String msg = "Error while storing blob. id="
                                    + state.getId() + " idx=" + i + " size=" + size;
                            log.error(msg, e);
                            throw new IOException(msg);
                        }
                        out.write(data, 0, data.length);
                        // replace value instance with value
                        // backed by resource in blob store and delete temp file
                        values[i] = InternalValue.create(data);
                        blobVal.discard();
                    }
                    break;
                case PropertyType.DOUBLE:
                    out.writeDouble(val.getDouble());
                    break;
View Full Code Here

TOP

Related Classes of org.apache.jackrabbit.core.value.BLOBFileValue

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.