Ignore:
Timestamp:
03/14/10 09:12:55 (2 years ago)
Author:
sys
Message:

Copy / move by id.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcNodeItem.java

    r14497 r15098  
    393393                        try { 
    394394                                vSubCopyMove.moveFrom(pFrom); 
    395                                 String vIdTarget = SrcFeatureIds.getSrcId(getSubSrcNode()); 
    396                                 if (vIdTarget == null || !vIdFrom.equals(vIdTarget)) { 
    397                                         //L'Id n'a pas suivi, on renomme les items pointeurs... 
    398                                         xRenamePointers(pFrom.getSrcUri(), vIdFrom); 
    399                                 } 
    400395                        } finally { 
    401396                                //On force un revalidation de l'item source et target. 
     397                                //FIXME sauf si listener auto sur subSrc 
    402398                                xValidateItem(pFrom); 
    403399                                xValidateItem(this); 
     400                        } 
     401                        String vIdTarget = SrcFeatureIds.getSrcId(getSubSrcNode()); 
     402                        if (vIdTarget == null || !vIdFrom.equals(vIdTarget)) { 
     403                                //L'Id n'a pas suivi, on renomme les items pointeurs... 
     404                                xRenamePointers(pFrom.getSrcUri(), vIdFrom); 
     405                        } else { 
     406                                //On ne fait qu'un refresh pour réévaluer les refUri 
     407                                xRefreshPointers(pFrom.getSrcUri()); 
    404408                        } 
    405409                } else { 
     
    428432        protected void xValidateItem(ISrcNode pFrom) { 
    429433                try { 
    430                         IHItemDef vItemDefFrom = pFrom.getAspect(IWspSrc.ITEMDEF_ASPECT_TYPE); 
    431                         if (vItemDefFrom != null) { 
    432                                 InputStream vIn = pFrom.newInputStream(false); 
    433                                 HStreamHandler vStreamHandler = vIn != null ? new HStreamHandler(vIn) : null; 
    434                                 try { 
    435                                         IHItemType vItemType = HTreatIdentif.findItemType(vItemDefFrom.hGetWorkspace(), pFrom.getSrcUri(), null, vStreamHandler); 
    436                                         IUser vUser = ThreadUser.getUser(); 
    437                                         int vClientId = ContextBdp.getThreadClientInt(); 
    438                                         vItemType.hGetModuleSave().hValidateItem(vItemDefFrom, vStreamHandler, vUser != null ? vUser.getAccount() : null, vClientId, null); 
    439                                 } finally { 
    440                                         if (vStreamHandler != null) vStreamHandler.hCloseAndPurgeCache(); 
     434                        if (pFrom.getContentStatus() <= ISrcContent.STATUS_NONE) { 
     435                                IHWorkspace vWspFrom = pFrom.getAspect(IWspSrc.WORKSPACE_ASPECT_TYPE); 
     436                                if (vWspFrom != null) { 
     437                                        vWspFrom.refreshUri(pFrom.getSrcUri()); 
     438                                } 
     439                        } else { 
     440                                IHItemDef vItemDefFrom = pFrom.getAspect(IWspSrc.ITEMDEF_ASPECT_TYPE); 
     441                                if (vItemDefFrom != null) { 
     442                                        InputStream vIn = pFrom.newInputStream(false); 
     443                                        HStreamHandler vStreamHandler = vIn != null ? new HStreamHandler(vIn) : null; 
     444                                        try { 
     445                                                IHItemType vItemType = HTreatIdentif.findItemType(vItemDefFrom.hGetWorkspace(), pFrom.getSrcUri(), null, vStreamHandler); 
     446                                                IUser vUser = ThreadUser.getUser(); 
     447                                                int vClientId = ContextBdp.getThreadClientInt(); 
     448                                                vItemType.hGetModuleSave().hValidateItem(vItemDefFrom, vStreamHandler, vUser != null ? vUser.getAccount() : null, vClientId, null); 
     449                                        } finally { 
     450                                                if (vStreamHandler != null) vStreamHandler.hCloseAndPurgeCache(); 
     451                                        } 
    441452                                } 
    442453                        } 
     
    485496        } 
    486497 
     498        /** 
     499         * Revalide les items pointeurs de cet item suite à un renommage. 
     500         */ 
     501        protected void xRefreshPointers(String pUriFrom) throws Exception { 
     502                //On transforme les items pointeurs sur pFrom 
     503                ISearchRequestEditable vReq = SrcFeatureSearch.newRequest(); 
     504                vReq.setMainExpression(new LinkParents().setStartPath(pUriFrom)); 
     505                Iterator<ISearchResultRow> vIt = SrcFeatureSearch.execute(vReq, getWorkspace().findNodeByUri(URI_ROOT)); 
     506                while (vIt.hasNext()) { 
     507                        XItemCache vItemCache = fItemCacheData.getItemCache().getWsp().xGetOrCreateItemCache(vIt.next().getRowUri(), false); 
     508                        vItemCache.xUnlinkChilds(); 
     509                        vItemCache.xLinkChilds(); 
     510                } 
     511        } 
     512 
    487513        public void fillFields(IFieldsCollector pFieldsToCollect) throws Exception { 
    488514                //Fields du subSource. 
Note: See TracChangeset for help on using the changeset viewer.