Excellent, Riccardo.

I'm happy that solution that worked. And thanks to Albert for fielding this!

--Rob



--- Riccardo Cohen <[EMAIL PROTECTED]> wrote:

> I found the solution of "hasLocalFileChanged" by using
> 
>          SourceVersionChecker checker = new 
> SourceVersionChecker(dir,archurl,archname);
>          StoredFileInfoBean 
> bean=checker.getStoredFileInfo(info.getNodeName());
>          long localid=bean.getSourceVersionUniqueID();
> 
> and
>          long 
> serverid=CommandCentral.getInstance().getFileLatestVersionID(info.getUniqueID());
> 
> This tells me if the server version is newer. So I still need to call 
> hasLocalFileChanged to
> know if 
> the local version is newer.
> 
> You'll find enclosed a little class called jammerlist that creates a file 
> out.txt
> 
> java jammerlist c:\your_jammerclient_directory\conf %1 %2 %3 %4
> 
> %1=login, %2=pass, %3=function, %4=archive
> 
> %3 =
>   S = all files different on server
>   O = all files checked out
>   W = all files with something
>   A = all files
> 
> You'll find a screen shot of the result
> 
> I wrote the url directly in the code, but you may easily add a new argument. 
> Sorry I wrote also
> the 
> path separator as "\" because i'm on windows.. I'll change that later.
> Next step is to restrict search to a certain directory only to avoid full 
> search. I'll do that
> later.
> 
> My suggestion to the dev team is that these lists could be added near the 
> menu "folder/view 
> check-out report" in client gui, because the built-in checkout report is 
> really not enough.
> 
> 
> Thanks for your help.
> 
> 
> Albert Moliner wrote:
> 
> > Oh, now I've remembered that probably the way to know whether someone had
> > checked a file in is to get the server's version number and compare it with 
> > the
> > local one. What I ignore is whether that can be checked manually or there's 
> > a
> > call that automates it.
> > Albert.
> > 
> > 
> > ----- Original Message -----
> > From: "Riccardo Cohen" <[EMAIL PROTECTED]>
> > To: <sourcejammer-users@lists.sourceforge.net>
> > Sent: Monday, August 08, 2005 9:43 AM
> > Subject: [SourceJammer-users] [Fwd: Re: using SimpleInterface to connect]
> > 
> > 
> > 
> >>Any idea for my pb on hasLocalFileChanged ?
> >>Thanks
> >>
> >>-------- Original Message --------
> >>Subject: Re: using SimpleInterface to connect
> >>Date: Fri, 29 Jul 2005 17:26:50 +0200
> >>From: Riccardo Cohen <[EMAIL PROTECTED]>
> >>Organization: articque
> >>To: sourcejammer-users@lists.sourceforge.net
> >>References: <[EMAIL PROTECTED]>
> >>
> >>[...]
> >>
> >>So now I can call the function hasLocalFileChanged(). But unfortunately it
> > 
> > does not do all what I
> > 
> >>want : It answers "true" when the file have been locally modified but 
> >>"false"
> > 
> > when the server file
> > 
> >>have been checked-in by someone else.
> >>
> >>I don't see why SourceVersionChecker.isStoredFileInfoAccurate() (called in
> > 
> > hasLocalFileChanged) does
> > 
> >>not detect that the server version is not the same as mine in that case ?
> >>
> >>I'll be in holidays next week and see that after.
> >>
> >>Thanks for all your help
> >>
> >>
> >>
> >>--
> >>Riccardo Cohen
> >>
> >>Articque
> >>Les Roches
> >>37230 Fondettes
> >>France
> >>web = http://www.articque.com
> >>tel: +33 02 47 49 90 49
> >>fax: +33 02 47 49 91 49
> >>
> >>
> >>-------------------------------------------------------
> >>SF.Net email is Sponsored by the Better Software Conference & EXPO
> >>September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
> >>Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
> >>Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
> >>_______________________________________________
> >>SourceJammer-users mailing list
> >>SourceJammer-users@lists.sourceforge.net
> >>https://lists.sourceforge.net/lists/listinfo/sourcejammer-users
> >>
> > 
> > 
> > 
> 
> -- 
> Riccardo Cohen
> 
> Articque
> Les Roches
> 37230 Fondettes
> France
> web = http://www.articque.com
> tel: +33 02 47 49 90 49
> fax: +33 02 47 49 91 49
> > import java.lang.*;
> import java.util.*;
> import java.sql.*;
> import java.io.*;
> import java.net.*;
> 
> import org.sourcejammer.client.*;
> import org.sourcejammer.client.filesys.*;
> import org.sourcejammer.client.plugin.*;
> import org.sourcejammer.client.gui.*;
> import org.sourcejammer.client.gui.conf.*;
> import org.sourcejammer.client.simpletools.*;
> import org.sourcejammer.project.*;
> import org.sourcejammer.project.view.*;
> import org.sourcejammer.util.*;
> import org.sourcejammer.xml.*;
> import org.w3c.dom.*;
> 
> public class jammerlist
> {
>   public static SimpleInterface si;
>   public static String function,localarchive;
>   public static String archname,archurl;
>   public static FileOutputStream st;
>   static
>   {
>     si=null;
>     function="";
>     st=null;
>     localarchive="";
>     archname="";
>     archurl="http://jam.articque.com/servlet/rpcrouter";;
>   }
>   public static void main(String[] args)
>   {
>     if (args.length!=5 || args[3].length()!=1)
>     {
>       System.out.println("syntax : jammerlist c:\\jammer\\conf login password 
> function
> archive");
>       System.out.println("function=");
>       System.out.println(" S = all files different on server");
>       System.out.println(" O = all files checked out");
>       System.out.println(" W = all files with something (=S+O)");
>       System.out.println(" A = all files");
>       return;
>     }
>     boolean fail=false;
>     Project proj=null;
>     Document doc=null;
>     String archivconf="";
>     String archivlocal="";
>     // static
>     si=SimpleInterface.getInstance();
>     function=args[3];
>     archname=args[4];
>     //
>     try{st=new FileOutputStream("out.txt");}catch(Exception ex){fail=true;}
>     if (fail)
>       System.out.println("cannot write file");
>     if (!fail)
>     {
>       fail=(jammerlist.si==null);
>       if (fail)
>         System.out.println("si null");
>     }
>     if (!fail)
>     {
>       jammerlist.si.setOut(System.out);
>       try{jammerlist.si.setConfDirectory(args[0]);}catch(Exception 
> ex){fail=true;}
>       if (fail)
>         System.out.println("conf err");
>     }
>     if (!fail)
>     {
>       try{proj=jammerlist.si.connect(args[4],archurl,
>         args[1],args[2]);}catch(Exception ex){ex.printStackTrace();fail=true;}
>       if (fail)
>         System.out.println("connect err");
>     }
>     if (!fail)
>     {
>       fail=proj==null;
>       if (fail)
>         System.out.println("proj null");
>     }
>     if (!fail)
>     {
>       AppConfig apconf=AppConfig.getInstance();
>       archivconf=apconf.getConfigFilePath()+"\\"+args[4]+"."+args[1];
>       //System.out.println("conf="+archivconf);
>       try{doc=XMLUtil.getXMLDoc(new 
> java.io.File(archivconf));}catch(Exception ex){doc=null;}
>       fail=doc==null;
>       if (fail)
>         System.out.println("fail parsing conf:"+archivconf);
>     }
>     if (!fail)
>     {
>       Element archdef=null,archelem=null;
>       StringBuffer buf=new StringBuffer();
>       if (!fail)
>       {
>         
> try{archdef=XMLUtil.getChildElement("DefaultDirectories",doc.getDocumentElement());
>           }catch(Exception ex){System.out.println("no defdir");fail=true;}
>         if (!fail)
>           fail=archdef==null;
>       }
>       if (!fail)
>       {
>         try{archelem=XMLUtil.getChildElement(args[4],archdef);
>           }catch(Exception ex){System.out.println("no archname");fail=true;}
>         if (!fail)
>           fail=archelem==null;
>       }
>       if (!fail)
>       {
>         buf=XMLUtil.getTextFromNode(archelem,"!");
>         fail=buf==null;
>       }
>       if (!fail)
>         localarchive=buf.toString();
>       if (fail)
>         System.out.println("cannot find defdir in xml:"+archivconf);
>     }
>     if (!fail)
>     {
>       /*
>       try{java.io.File
> file=CommandCentral.getInstance().getGuiConf().getDefaultWorkingDirectory();
>       System.out.println("Local archive at "+file.getAbsolutePath());
>       }catch(Exception ex){ex.printStackTrace();}
>       */
>       // misc infos
>       
> System.out.println("\n\nUser="+args[1]+"\nArchive="+args[4]+"\nFunction="+function);
>       try{ArchiveProperties 
> prop=CommandCentral.getInstance().getArchiveProperties();
>         System.out.println("Remote archive at "+prop.getArchiveRoot());
>         }catch(Exception ex){}
>       System.out.println("Local archive at "+localarchive);
>       // run
>       System.out.println("\n\n");
>       System.out.println("different\tcheckedout\tfile");
>       
> try{st.write("different(L/S)\tcheckedout\tfile\twarning\n".getBytes());}catch(Exception
> ex){}
>       check_proj(proj,0,"");
>       System.out.println("\n\n");
>     }
>     if (!fail)
>     {
>       try{jammerlist.si.disconnect();}catch(Exception ex){fail=true;}
>       if (fail)
>         System.out.println("disconnect err");
>     }
>     try{st.close();}catch(Exception ex){}
>     System.out.println(fail?"failed":"ok");
>   }
> 
>   public static void check_proj(Project proj,int level,String curpath)
>   {
>     level++;
>     NodeIterator itr = proj.childNodes();
>     while (itr.hasMoreNodes()) 
>     {
>       NodeInfo info=(NodeInfo)itr.getNextNode();
>       if (info.getNodeType()==AppConfig.NodeTypes.PROJECT)
>       {
>         long id=info.getUniqueID();
>         Project subp;
>         try{subp=jammerlist.si.getProjectObj(id);}catch(Exception 
> ex){subp=null;}
>         if (subp!=null)
>         {
> //System.out.println(get_level(level)+"<"+subp.getNodeName()+">"+"  (in
> "+localarchive+"\\"+curpath+")");
>           check_proj(subp,level,curpath+subp.getNodeName()+"\\");
>         }
>       }
>       else if (info.getNodeType()==AppConfig.NodeTypes.FILE)
>       {
> //System.out.println(get_level(level)+info.getNodeName()+"  (in 
> "+localarchive+"\\"+curpath+")
> ");
>         String chk="",chg="";
>         // checkout
>         if (info.isCheckedOut())
>         {
>           String user=info.getCheckedOutToUser();
>           if (user!=null)
>             chk=user;
>         }
>         // changed
>         String fulldir=localarchive+"\\"+curpath;
>         chg=file_changed(info,new java.io.File(fulldir));
>         if (
>           (chk.length()>0 && (function.equals("O") || function.equals("W"))) 
> ||
>           (chg.equals("S") && function.equals("S")) ||
>           (chg.length()>0 && function.equals("W")) ||
>           function.equals("A")
>           )
>         {
>           String warning="";
>           if (chk.length()==0 && chg.equals("L"))
>             warning="!";
>           
> System.out.println(chg+"\t"+chk+"\t"+curpath+info.getNodeName()+"\t"+warning);
>          
>
try{st.write((chg+"\t"+chk+"\t"+curpath+info.getNodeName()+"\t"+warning+"\n").getBytes());}catch(Exception
> ex){}
>         }
>       }
>     }
>     
>   }
> 
>   public static String get_level(int lev)
>   {
>     String ret="";
>     int idx;
>     for (idx=1;idx<=lev;idx++)
>       ret+="  ";
>     return(ret);
>   }
> 
>   public static String file_changed(NodeInfo info, java.io.File dir)
>   {
>     String ret = "";
>     java.io.File fl = new java.io.File(dir, info.getNodeName());
>     if (fl.exists())
>     {
>       try
>       {
>         boolean changed=false;
>         try{changed=CommandCentral.getInstance().hasLocalFileChanged(
>           info.getNodeName(),dir);}catch(Exception ex){}
>         if (changed)
>           ret="L";//this is a file modified locally (it is checked out)
>         SourceVersionChecker checker = new 
> SourceVersionChecker(dir,archurl,archname);
>         StoredFileInfoBean bean=checker.getStoredFileInfo(info.getNodeName());
>         long localid=bean.getSourceVersionUniqueID();
>         long 
> serverid=CommandCentral.getInstance().getFileLatestVersionID(info.getUniqueID());
> //System.out.println(""+localid+" / "+serverid);
>         if (localid!=serverid)
>           ret+="S";//this is a file newer on the server (checked in by 
> someone else)
>       }catch(Exception ex){}
>     }
>     return ret;
>   }
> 
> }
> 
> /*
> SJRequest request = CommandCentral.getInstance().getBaseRequest();
> request.putLong(SJRequestParams.REQUESTED_NODE_UNIQUE_ID, info.getUniqueID());
> request.putInt(SJRequestParams.VERSION_NUMBER, 0);
> request.putInt(SJRequestParams.REQUESTED_EOL_TYPE, 
> AppConfig.getInstance().getDefaultEOLType());
> SourceJammerClient.getInstance().getFileListeners().
>   notifyFileVersionGet(request, null, EventTimingType.BEFORE_REQUEST_SENT, 
> info);
> SJResponse response = CommandCentral.getInstance().sendRequest(
>   request, SOAPPortal.MCPMethodNames.GET_FILE_VERSION);
> SourceJammerClient.getInstance().getFileListeners().
>   notifyFileVersionGet(request, null, 
> EventTimingType.AFTER_RESPONSE_RECEIVED, info);
> System.out.print("file="+info.getNodeName()+" vers="+info.getNumVersions()); 
> //ALWAYS -1 !!
> */
> 



                
____________________________________________________
Start your day with Yahoo! - make it your home page 
http://www.yahoo.com/r/hs 
 


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
SourceJammer-users mailing list
SourceJammer-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sourcejammer-users

Reply via email to