public SimpleOrderedMap<Object> create(ComponentKwic kwic, Boolean encode) {
    SimpleOrderedMap<Object> mtasKwicResponse = new SimpleOrderedMap<>();
    mtasKwicResponse.add("key", kwic.key);
    ArrayList<NamedList<Object>> mtasKwicItemResponses = new ArrayList<>();
    if (kwic.output.equals(ComponentKwic.KWIC_OUTPUT_HIT)) {
      for (int docId : kwic.hits.keySet()) {
        NamedList<Object> mtasKwicItemResponse = new SimpleOrderedMap<>();
        List<KwicHit> list = kwic.hits.get(docId);
        List<NamedList<Object>> mtasKwicItemResponseItems = new ArrayList<>();
        for (KwicHit h : list) {
          NamedList<Object> mtasKwicItemResponseItem = new SimpleOrderedMap<>();
          SortedMap<Integer, List<List<String>>> hitData = new TreeMap<>();
          SortedMap<Integer, List<List<String>>> leftData = null;
          SortedMap<Integer, List<List<String>>> rightData = null;
          if (kwic.left > 0) {
            leftData = new TreeMap<>();
          }
          if (kwic.right > 0) {
            rightData = new TreeMap<>();
          }
          for (int position = Math.max(0,
              h.startPosition - kwic.left); position <= (h.endPosition
                  + kwic.right); position++) {
            if (h.hits.containsKey(position)) {
              List<List<String>> hitDataItem = new ArrayList<>();
              for (String term : h.hits.get(position)) {
                List<String> hitDataSubItem = new ArrayList<>();
                hitDataSubItem.add(CodecUtil.termPrefix(term));
                hitDataSubItem.add(CodecUtil.termValue(term));
                hitDataItem.add(hitDataSubItem);
              }
              if (position < h.startPosition) {
                if (leftData != null) {
                  leftData.put(position, hitDataItem);
                }
              } else if (position > h.endPosition) {
                if (rightData != null) {
                  rightData.put(position, hitDataItem);
                }
              } else {
                hitData.put(position, hitDataItem);
              }
            }
          }
          if (kwic.left > 0) {
            mtasKwicItemResponseItem.add("left", leftData);
          }
          mtasKwicItemResponseItem.add("hit", hitData);
          if (kwic.right > 0) {
            mtasKwicItemResponseItem.add("right", rightData);
          }
          mtasKwicItemResponseItems.add(mtasKwicItemResponseItem);
        }
        mtasKwicItemResponse.add("documentKey", kwic.uniqueKey.get(docId));
        mtasKwicItemResponse.add("documentTotal", kwic.subTotal.get(docId));
        mtasKwicItemResponse.add("documentMinPosition",
            kwic.minPosition.get(docId));
        mtasKwicItemResponse.add("documentMaxPosition",
            kwic.maxPosition.get(docId));
        mtasKwicItemResponse.add("list", mtasKwicItemResponseItems);
        mtasKwicItemResponses.add(mtasKwicItemResponse);
      }
    } else if (kwic.output.equals(ComponentKwic.KWIC_OUTPUT_TOKEN)) {
      for (int docId : kwic.tokens.keySet()) {
        NamedList<Object> mtasKwicItemResponse = new SimpleOrderedMap<>();
        List<KwicToken> list = kwic.tokens.get(docId);
        List<NamedList<Object>> mtasKwicItemResponseItems = new ArrayList<>();
        for (KwicToken k : list) {
          NamedList<Object> mtasKwicItemResponseItem = new SimpleOrderedMap<>();
          mtasKwicItemResponseItem.add("startPosition", k.startPosition);
          mtasKwicItemResponseItem.add("endPosition", k.endPosition);
          ArrayList<NamedList<Object>> mtasKwicItemResponseItemTokens = new ArrayList<>();
          for (MtasToken token : k.tokens) {
            NamedList<Object> mtasKwicItemResponseItemToken = new SimpleOrderedMap<>();
            if (token.getId() != null) {
              mtasKwicItemResponseItemToken.add("mtasId", token.getId());
            }
            mtasKwicItemResponseItemToken.add("prefix", token.getPrefix());
            mtasKwicItemResponseItemToken.add("value", token.getPostfix());
            if (token.getPositionStart() != null) {
              mtasKwicItemResponseItemToken.add("positionStart",
                  token.getPositionStart());
              mtasKwicItemResponseItemToken.add("positionEnd",
                  token.getPositionEnd());
            }
            if (token.getPositions() != null) {
              mtasKwicItemResponseItemToken.add("positions",
                  Arrays.toString(token.getPositions()));
            }
            if (token.getParentId() != null) {
              mtasKwicItemResponseItemToken.add("parentMtasId",
                  token.getParentId());
            }
            if (token.getPayload() != null) {
              mtasKwicItemResponseItemToken.add("payload", token.getPayload());
            }
            if (token.getOffsetStart() != null) {
              mtasKwicItemResponseItemToken.add("offsetStart",
                  token.getOffsetStart());
              mtasKwicItemResponseItemToken.add("offsetEnd",
                  token.getOffsetEnd());
            }
            if (token.getRealOffsetStart() != null) {
              mtasKwicItemResponseItemToken.add("realOffsetStart",
                  token.getRealOffsetStart());
              mtasKwicItemResponseItemToken.add("realOffsetEnd",
                  token.getRealOffsetEnd());
            }
            mtasKwicItemResponseItemTokens.add(mtasKwicItemResponseItemToken);
          }
          mtasKwicItemResponseItem.add("tokens",
              mtasKwicItemResponseItemTokens);
          mtasKwicItemResponseItems.add(mtasKwicItemResponseItem);
        }
        mtasKwicItemResponse.add("documentKey", kwic.uniqueKey.get(docId));
        mtasKwicItemResponse.add("documentTotal", kwic.subTotal.get(docId));
        mtasKwicItemResponse.add("documentMinPosition",
            kwic.minPosition.get(docId));
        mtasKwicItemResponse.add("documentMaxPosition",
            kwic.maxPosition.get(docId));
        mtasKwicItemResponse.add("list", mtasKwicItemResponseItems);
        mtasKwicItemResponses.add(mtasKwicItemResponse);
      }
    }
    mtasKwicResponse.add("list", mtasKwicItemResponses);
    return mtasKwicResponse;
  }
public SimpleOrderedMap < Object > create ( ComponentKwic kwic , Boolean encode ) { SimpleOrderedMap < Object > mtasKwicResponse = new SimpleOrderedMap < > ( ) ; mtasKwicResponse . add ( "key" , kwic . key ) ; ArrayList < NamedList < Object > > mtasKwicItemResponses = new ArrayList < > ( ) ; if ( kwic . output . equals ( ComponentKwic . KWIC_OUTPUT_HIT ) ) { for ( int docId : kwic . hits . keySet ( ) ) { NamedList < Object > mtasKwicItemResponse = new SimpleOrderedMap < > ( ) ; List < KwicHit > list = kwic . hits . get ( docId ) ; List < NamedList < Object > > mtasKwicItemResponseItems = new ArrayList < > ( ) ; for ( KwicHit h : list ) { NamedList < Object > mtasKwicItemResponseItem = new SimpleOrderedMap < > ( ) ; SortedMap < Integer , List < List < String > > > hitData = new TreeMap < > ( ) ; SortedMap < Integer , List < List < String > > > leftData = null ; SortedMap < Integer , List < List < String > > > rightData = null ; if ( kwic . left > 0 ) { leftData = new TreeMap < > ( ) ; } if ( kwic . right > 0 ) { rightData = new TreeMap < > ( ) ; } for ( int position = Math . max ( 0 , h . startPosition - kwic . left ) ; position <= ( h . endPosition + kwic . right ) ; position ++ ) { if ( h . hits . containsKey ( position ) ) { List < List < String > > hitDataItem = new ArrayList < > ( ) ; for ( String term : h . hits . get ( position ) ) { List < String > hitDataSubItem = new ArrayList < > ( ) ; hitDataSubItem . add ( CodecUtil . termPrefix ( term ) ) ; hitDataSubItem . add ( CodecUtil . termValue ( term ) ) ; hitDataItem . add ( hitDataSubItem ) ; } if ( position < h . startPosition ) { if ( leftData != null ) { leftData . put ( position , hitDataItem ) ; } } else if ( position > h . endPosition ) { if ( rightData != null ) { rightData . put ( position , hitDataItem ) ; } } else { hitData . put ( position , hitDataItem ) ; } } } if ( kwic . left > 0 ) { mtasKwicItemResponseItem . add ( "left" , leftData ) ; } mtasKwicItemResponseItem . add ( "hit" , hitData ) ; if ( kwic . right > 0 ) { mtasKwicItemResponseItem . add ( "right" , rightData ) ; } mtasKwicItemResponseItems . add ( mtasKwicItemResponseItem ) ; } mtasKwicItemResponse . add ( "documentKey" , kwic . uniqueKey . get ( docId ) ) ; mtasKwicItemResponse . add ( "documentTotal" , kwic . subTotal . get ( docId ) ) ; mtasKwicItemResponse . add ( "documentMinPosition" , kwic . minPosition . get ( docId ) ) ; mtasKwicItemResponse . add ( "documentMaxPosition" , kwic . maxPosition . get ( docId ) ) ; mtasKwicItemResponse . add ( "list" , mtasKwicItemResponseItems ) ; mtasKwicItemResponses . add ( mtasKwicItemResponse ) ; } } else if ( kwic . output . equals ( ComponentKwic . KWIC_OUTPUT_TOKEN ) ) { for ( int docId : kwic . tokens . keySet ( ) ) { NamedList < Object > mtasKwicItemResponse = new SimpleOrderedMap < > ( ) ; List < KwicToken > list = kwic . tokens . get ( docId ) ; List < NamedList < Object > > mtasKwicItemResponseItems = new ArrayList < > ( ) ; for ( KwicToken k : list ) { NamedList < Object > mtasKwicItemResponseItem = new SimpleOrderedMap < > ( ) ; mtasKwicItemResponseItem . add ( "startPosition" , k . startPosition ) ; mtasKwicItemResponseItem . add ( "endPosition" , k . endPosition ) ; ArrayList < NamedList < Object > > mtasKwicItemResponseItemTokens = new ArrayList < > ( ) ; for ( MtasToken token : k . tokens ) { NamedList < Object > mtasKwicItemResponseItemToken = new SimpleOrderedMap < > ( ) ; if ( token . getId ( ) != null ) { mtasKwicItemResponseItemToken . add ( "mtasId" , token . getId ( ) ) ; } mtasKwicItemResponseItemToken . add ( "prefix" , token . getPrefix ( ) ) ; mtasKwicItemResponseItemToken . add ( "value" , token . getPostfix ( ) ) ; if ( token . getPositionStart ( ) != null ) { mtasKwicItemResponseItemToken . add ( "positionStart" , token . getPositionStart ( ) ) ; mtasKwicItemResponseItemToken . add ( "positionEnd" , token . getPositionEnd ( ) ) ; } if ( token . getPositions ( ) != null ) { mtasKwicItemResponseItemToken . add ( "positions" , Arrays . toString ( token . getPositions ( ) ) ) ; } if ( token . getParentId ( ) != null ) { mtasKwicItemResponseItemToken . add ( "parentMtasId" , token . getParentId ( ) ) ; } if ( token . getPayload ( ) != null ) { mtasKwicItemResponseItemToken . add ( "payload" , token . getPayload ( ) ) ; } if ( token . getOffsetStart ( ) != null ) { mtasKwicItemResponseItemToken . add ( "offsetStart" , token . getOffsetStart ( ) ) ; mtasKwicItemResponseItemToken . add ( "offsetEnd" , token . getOffsetEnd ( ) ) ; } if ( token . getRealOffsetStart ( ) != null ) { mtasKwicItemResponseItemToken . add ( "realOffsetStart" , token . getRealOffsetStart ( ) ) ; mtasKwicItemResponseItemToken . add ( "realOffsetEnd" , token . getRealOffsetEnd ( ) ) ; } mtasKwicItemResponseItemTokens . add ( mtasKwicItemResponseItemToken ) ; } mtasKwicItemResponseItem . add ( "tokens" , mtasKwicItemResponseItemTokens ) ; mtasKwicItemResponseItems . add ( mtasKwicItemResponseItem ) ; } mtasKwicItemResponse . add ( "documentKey" , kwic . uniqueKey . get ( docId ) ) ; mtasKwicItemResponse . add ( "documentTotal" , kwic . subTotal . get ( docId ) ) ; mtasKwicItemResponse . add ( "documentMinPosition" , kwic . minPosition . get ( docId ) ) ; mtasKwicItemResponse . add ( "documentMaxPosition" , kwic . maxPosition . get ( docId ) ) ; mtasKwicItemResponse . add ( "list" , mtasKwicItemResponseItems ) ; mtasKwicItemResponses . add ( mtasKwicItemResponse ) ; } } mtasKwicResponse . add ( "list" , mtasKwicItemResponses ) ; return mtasKwicResponse ; }
/*
(non-Javadoc)

@see
mtas.solr.handler.component.util.MtasSolrComponent#create(mtas.codec.util.
CodecComponent.BasicComponent, java.lang.Boolean)