Changeset 11160


Ignore:
Timestamp:
06/07/08 10:34:24 (4 years ago)
Author:
sys
Message:

Outline : publication de la facet y compris pour les leafs (mise à jour du titre)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Jav_BDP/com/scenari/m/bdp/facet/outline/leaf/FacetOutlineLeaf.java

    r9979 r11160  
    3939package com.scenari.m.bdp.facet.outline.leaf; 
    4040 
     41import java.util.ArrayList; 
    4142import java.util.List; 
     43import java.util.Properties; 
     44 
     45import javax.xml.transform.OutputKeys; 
    4246 
    4347import org.xml.sax.ContentHandler; 
     
    4650import com.scenari.m.bdp.facet.Facet; 
    4751import com.scenari.m.bdp.facet.outline.IFacetOutline; 
     52import com.scenari.m.bdp.facet.outline.FacetOutline.SerializerMergeDoc; 
     53import com.scenari.m.bdp.item.HQCode; 
     54import com.scenari.m.bdp.item.IHItem; 
    4855import com.scenari.m.bdp.item.IHItemDef; 
    4956import com.scenari.m.bdp.itemtype.IHItemType; 
    5057import com.scenari.s.co.source.IHSource; 
     58import com.scenari.s.co.source.externes.HSourceOneShot; 
    5159import com.scenari.s.co.transform.HTransformParams; 
    5260import com.scenari.s.fw.log.HLogMgr; 
     61import com.scenari.s.fw.utils.HCharSeqUtil; 
     62import com.scenari.s.fw.utils.stream.HBufferStream; 
    5363 
    5464/** 
     
    7484         */ 
    7585        public IHSource getFacet(IHItemDef pItem, String pIdSubItem, HTransformParams pQueryString) throws Exception { 
    76                 //HSource 
    77                 return IHSource.NULL; 
     86                HBufferStream vBuf = new HBufferStream(); 
     87 
     88                String vDepthStr = pQueryString.hGetValueParam(IFacetOutline.PARAM_DEPTH); 
     89                int vDepth = -1; 
     90                if (vDepthStr != null && vDepthStr.length() > 0) vDepth = Integer.parseInt(vDepthStr); 
     91 
     92                Properties vProps = new Properties(); 
     93                vProps.put(OutputKeys.METHOD, "xml"); 
     94                vProps.put(OutputKeys.ENCODING, "UTF-8"); 
     95                SerializerMergeDoc vSer = new SerializerMergeDoc(); 
     96                vSer.init(vBuf, vProps); 
     97 
     98                List vStackCycleGuard = new ArrayList(); 
     99                vStackCycleGuard.add(pItem); 
     100                vStackCycleGuard.add(pIdSubItem); 
     101 
     102                AttributesImpl vAtts = new AttributesImpl(); 
     103                vSer.startDocument(); 
     104                vSer.startElement(IFacetOutline.OUTLINE_NS, "outline", "outline", vAtts); 
     105                vAtts.addAttribute("", "uri", "uri", "CDATA", HQCode.hGetUri(pItem.hGetSpace(), pItem.hGetCode(), null, pIdSubItem)); 
     106                String vSgn; 
     107                if (pIdSubItem != null && pIdSubItem.length() > 0) { 
     108                        //En cas de subItem, on a besoin de l'item entier, pas seulement de l'itemDef (recherche de la signature) 
     109                        IHItem vItem = (!(pItem instanceof IHItem)) ? pItem.hGetWorkspace().hGetItem(pItem.hGetId(), null) : (IHItem) pItem; 
     110                        vSgn = vItem.hGetSubItemSgn(pIdSubItem); 
     111                } else { 
     112                        vSgn = pItem.hGetSignature(); 
     113                } 
     114                if(vSgn!=null) vAtts.addAttribute("", "sgn", "sgn", "CDATA", vSgn); 
     115                vAtts.addAttribute("", "st", "st", "CDATA", HCharSeqUtil.hGetIntToString(pItem.hGetStatus())); 
     116                vSer.startElement(IFacetOutline.OUTLINE_NS, "item", "item", vAtts); 
     117 
     118                // 
     119                writeOutline(vSer, pItem, pIdSubItem, true, pQueryString, vDepth, vStackCycleGuard); 
     120 
     121                vSer.endElement(IFacetOutline.OUTLINE_NS, "item", "item"); 
     122                vSer.endElement(IFacetOutline.OUTLINE_NS, "outline", "outline"); 
     123                vSer.endDocument(); 
     124                vSer.flush(); 
     125                vSer.flushWriter(); 
     126                vBuf.close(); 
     127 
     128                return new HSourceOneShot(vBuf.hGetInputStream(true), vBuf.hGetLenght(), System.currentTimeMillis(), "text/xml"); 
    78129        } 
    79130 
Note: See TracChangeset for help on using the changeset viewer.