Package org.apache.lucene.document

Examples of org.apache.lucene.document.Document


    {
      return _prop.isSkip();
    }

  public IndexingReq[] buildIndexingReqs() {
    Document doc = buildDocument();
    IndexingReq req = new IndexingReq(doc);
    return new IndexingReq[]{req};
  }
View Full Code Here


 
 
  public static Document[] buildData(){
    ArrayList<Document> dataList=new ArrayList<Document>();
   
    Document d1=new Document();
    d1.add(buildMetaField("id","1"));
    d1.add(buildMetaField("shape","square"));
    d1.add(buildMetaField("color","red"));
    d1.add(buildMetaField("size","4"));
    d1.add(buildMetaField("location","toy/lego/block/"));
    d1.add(buildMetaField("tag","rabbit"));
    d1.add(buildMetaField("tag","pet"));
        d1.add(buildMetaField("tag","animal"));
        d1.add(buildMetaSizePayloadField(tagSizePayloadTerm,3));
    d1.add(buildMetaField("number","0010"));
    d1.add(buildMetaField("date","2000/01/01"));
    d1.add(buildMetaField("name","ken"));
    d1.add(buildMetaField("char","k"));
    d1.add(buildMetaField("multinum","001"));
    d1.add(buildMetaField("multinum","003"));
    d1.add(buildMetaField("compactnum","001"));
    d1.add(buildMetaField("compactnum","003"));
    d1.add(buildMetaField("numendorsers","000003"));
    d1.add(buildMetaField("path","a-b"));
    d1.add(buildMetaField("multipath","a-b"));
    d1.add(buildMetaField("custom","000003"));
    d1.add(buildMetaField("latitude", "60"));
    d1.add(buildMetaField("longitude", "120"));
    d1.add(buildMetaField("salary", "04500"));
   
    Field sf = new Field("testStored","stored",Store.YES,Index.NOT_ANALYZED_NO_NORMS);
    sf.setOmitTermFreqAndPositions(true);
    d1.add(sf);
   
    Document d2=new Document();
    d2.add(buildMetaField("id","2"));
    d2.add(buildMetaField("shape","rectangle"));
    d2.add(buildMetaField("color","red"));
    d2.add(buildMetaField("size","2"));
    d2.add(buildMetaField("location","toy/lego/block/"));
    d2.add(buildMetaField("tag","dog"));
    d2.add(buildMetaField("tag","pet"));
    d2.add(buildMetaField("tag","poodle"));
        d2.add(buildMetaSizePayloadField(tagSizePayloadTerm,3));
    d2.add(buildMetaField("number","0011"));
    d2.add(buildMetaField("date","2003/02/14"));
    d2.add(buildMetaField("name","igor"));
    d2.add(buildMetaField("char","i"));
    d2.add(buildMetaField("multinum","002"));
    d2.add(buildMetaField("multinum","004"));
    d2.add(buildMetaField("compactnum","002"));
    d2.add(buildMetaField("compactnum","004"));
    d2.add(buildMetaField("numendorsers","000010"));
    d2.add(buildMetaField("path","a-c-d"));
    d2.add(buildMetaField("multipath","a-c-d"));
    d2.add(buildMetaField("multipath","a-b"));
    d2.add(buildMetaField("custom","000010"));
    d2.add(buildMetaField("latitude", "50"));
    d2.add(buildMetaField("longitude", "110"));
    d2.add(buildMetaField("salary", "08500"));
   
    Document d3=new Document();
    d3.add(buildMetaField("id","3"));
    d3.add(buildMetaField("shape","circle"));
    d3.add(buildMetaField("color","green"));
    d3.add(buildMetaField("size","3"));
    d3.add(buildMetaField("location","toy/lego/"));
    d3.add(buildMetaField("tag","rabbit"));
    d3.add(buildMetaField("tag","cartoon"));
    d3.add(buildMetaField("tag","funny"))
        d3.add(buildMetaSizePayloadField(tagSizePayloadTerm,3));
    d3.add(buildMetaField("number","0230"));
    d3.add(buildMetaField("date","2001/12/25"));
    d3.add(buildMetaField("name","john"));
    d3.add(buildMetaField("char","j"));
    d3.add(buildMetaField("multinum","007"));
    d3.add(buildMetaField("multinum","012"));
    d3.add(buildMetaField("compactnum","007"));
    d3.add(buildMetaField("compactnum","012"));
    d3.add(buildMetaField("numendorsers","000015"));
    d3.add(buildMetaField("path","a-e"));
    d3.add(buildMetaField("multipath","a-e"));
    d3.add(buildMetaField("multipath","a-b"));
    d3.add(buildMetaField("custom","000015"));
    d3.add(buildMetaField("latitude", "35"));
    d3.add(buildMetaField("longitude", "70"));
    d3.add(buildMetaField("salary", "06500"));
   
    Document d4=new Document();
    d4.add(buildMetaField("id","4"));
    d4.add(buildMetaField("shape","circle"));
    d4.add(buildMetaField("color","blue"));
    d4.add(buildMetaField("size","1"));
    d4.add(buildMetaField("location","toy/"));
    d4.add(buildMetaField("tag","store"));
    d4.add(buildMetaField("tag","pet"));
    d4.add(buildMetaField("tag","animal"));   
        d4.add(buildMetaSizePayloadField(tagSizePayloadTerm,3));
    d4.add(buildMetaField("number","0913"));
    d4.add(buildMetaField("date","2004/11/24"));
    d4.add(buildMetaField("name","cathy"));
    d4.add(buildMetaField("char","c"));
    d4.add(buildMetaField("multinum","007"));
    d4.add(buildMetaField("multinum","007"));
    d4.add(buildMetaField("compactnum","007"));
    d4.add(buildMetaField("numendorsers","000019"));
    d4.add(buildMetaField("path","a-c"));
    d4.add(buildMetaField("multipath","a-c"));
    d4.add(buildMetaField("multipath","a-b"));
    d4.add(buildMetaField("custom","000019"));
    d4.add(buildMetaField("latitude", "30"));
    d4.add(buildMetaField("longitude", "75"));
    d4.add(buildMetaField("salary", "11200"));
   
    Document d5=new Document();
    d5.add(buildMetaField("id","5"));
    d5.add(buildMetaField("shape","square"));
    d5.add(buildMetaField("color","blue"));
    d5.add(buildMetaField("size","5"));
    d5.add(buildMetaField("location","toy/lego/"));
    d5.add(buildMetaField("tag","cartoon"));
    d5.add(buildMetaField("tag","funny"));
    d5.add(buildMetaField("tag","disney"))
        d5.add(buildMetaSizePayloadField(tagSizePayloadTerm,3));
    d5.add(buildMetaField("number","1013"));
    d5.add(buildMetaField("date","2002/03/08"));
    d5.add(buildMetaField("name","mike"));
    d5.add(buildMetaField("char","m"));
    d5.add(buildMetaField("multinum","001"));
    d5.add(buildMetaField("multinum","001"));
    d5.add(buildMetaField("compactnum","001"));
    d5.add(buildMetaField("compactnum","001"));
    d5.add(buildMetaField("numendorsers","000002"));
    d5.add(buildMetaField("path","a-e-f"));
    d5.add(buildMetaField("multipath","a-e-f"));
    d5.add(buildMetaField("multipath","a-b"));
    d5.add(buildMetaField("custom","000002"));
    d5.add(buildMetaField("latitude", "60"));
    d5.add(buildMetaField("longitude", "120"));
    d5.add(buildMetaField("salary", "10500"));
   
    Document d6=new Document();
    d6.add(buildMetaField("id","6"));
    d6.add(buildMetaField("shape","rectangle"));
    d6.add(buildMetaField("color","green"));
    d6.add(buildMetaField("size","6"));
    d6.add(buildMetaField("location","toy/lego/block/"));
    d6.add(buildMetaField("tag","funny"));
    d6.add(buildMetaField("tag","humor"));
    d6.add(buildMetaField("tag","joke"));   
        d6.add(buildMetaSizePayloadField(tagSizePayloadTerm,3));
    d6.add(buildMetaField("number","2130"));
    d6.add(buildMetaField("date","2007/08/01"));
    d6.add(buildMetaField("name","doug"));
    d6.add(buildMetaField("char","d"));
    d6.add(buildMetaField("multinum","001"));
    d6.add(buildMetaField("multinum","002"));
    d6.add(buildMetaField("multinum","003"));
    d6.add(buildMetaField("compactnum","001"));
    d6.add(buildMetaField("compactnum","002"));
    d6.add(buildMetaField("compactnum","003"));
    d6.add(buildMetaField("numendorsers","000009"));
    d6.add(buildMetaField("path","a-c-d"));
    d6.add(buildMetaField("multipath","a-c-d"));
    d6.add(buildMetaField("multipath","a-b"));
    d6.add(buildMetaField("custom","000009"));
    d6.add(buildMetaField("latitude", "80"));
    d6.add(buildMetaField("longitude", "-90"));
    d6.add(buildMetaField("salary", "08900"));
   
    Document d7=new Document();
    d7.add(buildMetaField("id","7"));
    d7.add(buildMetaField("shape","square"));
    d7.add(buildMetaField("color","red"));
    d7.add(buildMetaField("size","7"));
    d7.add(buildMetaField("location","toy/lego/"));
    d7.add(buildMetaField("tag","humane"));
    d7.add(buildMetaField("tag","dog"));
    d7.add(buildMetaField("tag","rabbit"))
        d7.add(buildMetaSizePayloadField(tagSizePayloadTerm,3));
    d7.add(buildMetaField("number","0005"));
    d7.add(buildMetaField("date","2006/06/01"));
    d7.add(buildMetaField("name","abe"));
    d7.add(buildMetaField("char","a"));
    d7.add(buildMetaField("multinum","008"));
    d7.add(buildMetaField("multinum","003"));
    d7.add(buildMetaField("compactnum","008"));
    d7.add(buildMetaField("compactnum","003"));
    d7.add(buildMetaField("numendorsers","000013"));
    d7.add(buildMetaField("path","a-c"));
    d7.add(buildMetaField("multipath","a-c"));
    d7.add(buildMetaField("multipath","a-b"));
    d7.add(buildMetaField("custom","000013"));
    d7.add(buildMetaField("latitude", "70"));
    d7.add(buildMetaField("longitude", "-60"));
    d7.add(buildMetaField("salary", "28500"));
   
    Document d8 = new Document();
    d8.add(buildMetaField("latitude", "35"));
    d8.add(buildMetaField("longitude", "120"));
    d8.add(buildMetaField("salary", "00120"));
   
    dataList.add(d1);
    dataList.add(d2);
    dataList.add(d3);
    dataList.add(d4);
View Full Code Here

    } // fi (oStrm)
    else {
      sText = "";
    }

    Document oDoc = new Document();
    oDoc.add (new Field ("workarea" , sWorkArea, Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("container", sContainer, Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("guid"     , sGuid, Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("number"   , dNumber.toString(), Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("created"  , DateTools.dateToString(dtSent, DateTools.Resolution.SECOND), Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("size"     , Gadgets.leftPad(String.valueOf(iSize),'0',10), Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("title"    , Gadgets.ASCIIEncode(sSubject), Field.Store.YES, Field.Index.TOKENIZED));
    oDoc.add (new Field ("author"   , Gadgets.ASCIIEncode(sAuthor), Field.Store.YES, Field.Index.TOKENIZED));
    oDoc.add (new Field ("abstract" , sAbstract, Field.Store.YES, Field.Index.TOKENIZED));
    oDoc.add (new Field ("recipients",sRecipients, Field.Store.YES, Field.Index.TOKENIZED));
    oDoc.add (new Field ("comments" , sComments, Field.Store.NO, Field.Index.TOKENIZED));
    oDoc.add (new Field ("text"     , sText, Field.Store.NO, Field.Index.TOKENIZED));

    if (DebugFile.trace) DebugFile.writeln("IndexWriter.addDocument([Document])");

    oIWrt.addDocument(oDoc);
View Full Code Here

                                    String sText)
    throws ClassNotFoundException, IOException, IllegalArgumentException,
             NoSuchFieldException, IllegalAccessException, InstantiationException,
             NullPointerException {

    Document oDoc = new Document();
    oDoc.add (new Field ("workarea" , sWorkArea, Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("container", sContainer, Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("guid"     , sGuid, Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("created"  , DateTools.dateToString(dtCreated, DateTools.Resolution.SECOND), Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field ("title"    , sTitle, Field.Store.YES, Field.Index.TOKENIZED));
    oDoc.add (new Field ("author"   , sAuthor, Field.Store.YES, Field.Index.TOKENIZED));
    oDoc.add (new Field ("text"     , sText, Field.Store.NO, Field.Index.TOKENIZED));
    if (sText.length()>80)
      oDoc.add (new Field("abstract", sText.substring(0,80), Field.Store.YES, Field.Index.TOKENIZED));
    else
      oDoc.add (new Field("abstract", sText, Field.Store.YES, Field.Index.TOKENIZED));
    oIWrt.addDocument(oDoc);
  } // addNewsMessage
View Full Code Here

                            String sStatus, String sComments, String sText)
    throws ClassNotFoundException, IOException, IllegalArgumentException,
             NoSuchFieldException, IllegalAccessException, InstantiationException,
             NullPointerException {

    Document oDoc = new Document();
    oDoc.add (new Field("workarea" , sWorkArea, Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field("container", sProject , Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field("guid"     , sGuid    , Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field("number"   , String.valueOf(iNumber), Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field("title"    , sTitle, Field.Store.YES, Field.Index.TOKENIZED));
    oDoc.add (new Field("created"  , DateTools.dateToString(dtCreated, DateTools.Resolution.SECOND), Field.Store.YES, Field.Index.UN_TOKENIZED));
    oDoc.add (new Field("writer"   , sWriter, Field.Store.YES, Field.Index.UN_TOKENIZED));
    if (null!=sStatus)     oDoc.add (new Field("status"   , sStatus, Field.Store.YES, Field.Index.UN_TOKENIZED));
    if (null!=sType)       oDoc.add (new Field("type"     , sType  , Field.Store.YES, Field.Index.UN_TOKENIZED));
    if (null!=oPriority)   oDoc.add (new Field("priority" , oPriority.toString(), Field.Store.YES, Field.Index.UN_TOKENIZED));
    if (null!=oSeverity)   oDoc.add (new Field("severity" , oSeverity.toString(), Field.Store.YES, Field.Index.UN_TOKENIZED));
    if (null!=sReportedBy) oDoc.add (new Field("author"   , sReportedBy, Field.Store.YES, Field.Index.TOKENIZED));
    if (null==sComments)
      oDoc.add (new Field("comments", "", Field.Store.NO, Field.Index.TOKENIZED));
    else
      oDoc.add (new Field("comments", sComments, Field.Store.NO, Field.Index.TOKENIZED));
    if (null==sText) {
      oDoc.add (new Field("text", "", Field.Store.NO, Field.Index.TOKENIZED));
      oDoc.add (new Field("abstract", "", Field.Store.YES, Field.Index.TOKENIZED));
    } else {
      oDoc.add (new Field("text", sText, Field.Store.NO, Field.Index.TOKENIZED));
      if (sText.length()>80)
        oDoc.add (new Field("abstract", sText.substring(0,80).replace('\n',' ').replace('\r',' '), Field.Store.YES, Field.Index.TOKENIZED));
      else
        oDoc.add (new Field("abstract", sText.replace('\n',' ').replace('\r',' '), Field.Store.YES, Field.Index.TOKENIZED));
    }
    oIWrt.addDocument(oDoc);
  } // addBug
View Full Code Here

  String sSegments = Gadgets.chomp(sLuceneIndexPath,File.separator)+"k_bugs"+File.separator+sWorkArea; 
    if (DebugFile.trace) DebugFile.writeln("new IndexSearcher("+sSegments+")");
    IndexSearcher oSearch = new IndexSearcher(sSegments);
   
    Document oDoc;

    if (iLimit>0) {
      TopDocs oTopSet = oSearch.search(oQry, null, iLimit);
      if (oTopSet.scoreDocs!=null) {
        ScoreDoc[] oTopDoc = oTopSet.scoreDocs;
        int iDocCount = oTopDoc.length;
        aRetArr = new BugRecord[iDocCount];
        for (int d=0; d<iDocCount; d++) {
          oDoc = oSearch.doc(oTopDoc[d].doc);
          String[] aAbstract = Gadgets.split(oSearch.doc(oTopDoc[d].doc).get("abstract"), '¨');
          aRetArr[d] = new BugRecord(oTopDoc[d].score,
                   Integer.parseInt(oDoc.get("number")),
                       oDoc.get("guid"), oDoc.get("container"), oDoc.get("title"),
                       oDoc.get("author"), oDoc.get("created"), oDoc.get("type"),
                       oDoc.get("status"), oDoc.get("priority"),
                       oDoc.get("severity"), oDoc.get("abstract"));
        } // next
      } else {
        aRetArr = null;
      }
    } else {
      Hits oHitSet = oSearch.search(oQry);
      int iHitCount = oHitSet.length();
      if (iHitCount>0) {
        aRetArr = new BugRecord[iHitCount];
        for (int h=0; h<iHitCount; h++) {
          oDoc = oHitSet.doc(h);
          aRetArr[h] = new BugRecord(oHitSet.score(h),
                   Integer.parseInt(oDoc.get("number")),
                       oDoc.get("guid"), oDoc.get("container"), oDoc.get("title"),
                       oDoc.get("author"), oDoc.get("created"), oDoc.get("type"),
                       oDoc.get("status"), oDoc.get("priority"),
                       oDoc.get("severity"), oDoc.get("abstract"));
        } // next
      } else {
        aRetArr = null;
      }
    } // fi (iLimit>0)
View Full Code Here

        DebugFile.writeln(e.getMessage());
    }
  }
    IndexSearcher oSearch = new IndexSearcher(sSegments);
   
    Document oDoc;

    ContactRecord aRetArr[] = null;
    //Recorremos los resultados y los vamos añadiendo al map
   
      TopDocs oTopSet = oSearch.search(oQry, null, 20);
      if (oTopSet.scoreDocs!=null) {
        ScoreDoc[] oTopDoc = oTopSet.scoreDocs;
        int iDocCount = oTopDoc.length;
        aRetArr = new ContactRecord[iDocCount];
        for (int d=0; d<iDocCount; d++) {
          oDoc = oSearch.doc(oTopDoc[d].doc);
         // String[] aAbstract = Gadgets.split(oSearch.doc(oTopDoc[d].doc).get("abstract"), '¨');
          aRetArr[d] = new ContactRecord(oTopDoc[d].score,oDoc.get("author"),
                oDoc.get("workarea"),oDoc.get("guid"),oDoc.get("value"));
        } // next
      } else {
        aRetArr = null;
      }
  
View Full Code Here

 
  String sSegments = Gadgets.chomp(sLuceneIndexPath,File.separator)+"k_newsmsgs"+File.separator+sWorkArea; 
    if (DebugFile.trace) DebugFile.writeln("new IndexSearcher("+sSegments+")");
    IndexSearcher oSearch = new IndexSearcher(sSegments);

    Document oDoc;

    if (iLimit>0) {
      System.out.println("IndexSearcher.search("+oQrx.toString()+")");
      if (DebugFile.trace) DebugFile.writeln("IndexSearcher.search("+oQrx.toString()+")");
      TopDocs oTopSet = oSearch.search(oQrx, null, iLimit);
      if (oTopSet.scoreDocs!=null) {
        ScoreDoc[] oTopDoc = oTopSet.scoreDocs;
        int iDocCount = oTopDoc.length;
        aRetArr = new NewsMessageRecord[iDocCount];
        for (int d=0; d<iDocCount; d++) {
          oDoc = oSearch.doc(oTopDoc[d].doc);
          String[] aAbstract = Gadgets.split(oSearch.doc(oTopDoc[d].doc).get("abstract"), '¨');
          try {
            aRetArr[d] = new NewsMessageRecord(oTopDoc[d].score, oDoc.get("workarea"),
                         oDoc.get("guid"), oDoc.get("container"), oDoc.get("title"),                      
                         oDoc.get("author"), DateTools.stringToDate(oDoc.get("created")), oDoc.get("abstract"));
          } catch (java.text.ParseException neverthrown) {
            throw new ParseException("NewsMessageSearcher.search() Error parsing date "+oDoc.get("created")+" of document "+oDoc.get("guid"));
          }
        } // next
      } else {
        aRetArr = null;
      }
    } else {
      Hits oHitSet = oSearch.search(oQrx);
      int iHitCount = oHitSet.length();
      if (iHitCount>0) {
        aRetArr = new NewsMessageRecord[iHitCount];
        for (int h=0; h<iHitCount; h++) {
          oDoc = oHitSet.doc(h);
          try {
            aRetArr[h] = new NewsMessageRecord(oHitSet.score(h), oDoc.get("workarea"),
                         oDoc.get("guid"), oDoc.get("container"), oDoc.get("title"),
                         oDoc.get("author"), DateTools.stringToDate(oDoc.get("created")), oDoc.get("abstract"));
          } catch (java.text.ParseException neverthrown) {
            throw new ParseException("NewsMessageSearcher.search() Error parsing date "+oDoc.get("created")+" of document "+oDoc.get("guid"));
          }
        } // next
      } else {
        aRetArr = null;
      }
View Full Code Here

           IllegalAccessException, InstantiationException,
           NullPointerException {

    String sFieldName;
    Object oFieldValue;
    Document oDoc = new Document();

  // *******************************************
  // Index keywords as stored untokenized fields
 
    Iterator oKeys = oKeywords.keySet().iterator();
    while (oKeys.hasNext()) {
      sFieldName = (String) oKeys.next();
      oFieldValue = oKeywords.get(sFieldName);
      if (null==oFieldValue) oFieldValue = "";
     
      if (oFieldValue.getClass().getName().equals("java.util.Date"))
        oDoc.add(new Field(sFieldName, DateTools.dateToString((Date) oFieldValue,  DateTools.Resolution.SECOND), Field.Store.YES, Field.Index.UN_TOKENIZED));
      else
        oDoc.add(new Field(sFieldName, (String) oFieldValue, Field.Store.YES, Field.Index.UN_TOKENIZED));
    } // wend

  // ******************************************************
  // Index titles, authors, etc. as stored tokenized fields

    Iterator oTxts = oTexts.keySet().iterator();
    while (oTxts.hasNext()) {
      sFieldName = (String) oTxts.next();
      oFieldValue = oTexts.get(sFieldName);
      if (null==oFieldValue) oFieldValue = "";
      oDoc.add(new Field(sFieldName, (String) oFieldValue, Field.Store.YES, Field.Index.TOKENIZED));
    } // wend

  // *********************************************
  // Index full texts as unstored tokenized fields
 
    Iterator oUnStor = oUnStored.keySet().iterator();
    while (oUnStor.hasNext()) {
      sFieldName = (String) oUnStor.next();
      oFieldValue = oUnStored.get(sFieldName);
      if (null==oFieldValue) oFieldValue = "";
      oDoc.add(new Field(sFieldName, (String) oFieldValue, Field.Store.NO, Field.Index.TOKENIZED));
    } // wend
    oIWrt.addDocument(oDoc);
  } // add
View Full Code Here

    analyzer = null;
  }

  private void addDoc(String key, String[] f1, String[] f2, int[] meta) throws IOException
  {
    Document doc = new Document();
    addStoredField(doc, "key", key);
    addTextField(doc, "f1", f1);
    addTextField(doc, "f2", f2);
    addMetaDataField(doc, intMetaTerm, meta);
    writer.addDocument(doc);
View Full Code Here

TOP

Related Classes of org.apache.lucene.document.Document

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.