Server StarTeamServer = new Server("WINAPPSRV", 49201); StarTeamServer.connect(); if (StarTeamServer.isConnected()) { System.out.println("Connect to server OK!"); StarTeamServer.logOn("markov", "123456"); if (StarTeamServer.isLoggedOn()) { System.out.println("LogOn to server OK!"); Project[] projects = StarTeamServer.getProjects(); Project TW = null; for (Project currentproject : projects) { if (currentproject.getName().equals("Tw")) { TW = currentproject; break; } } if (TW != null) { System.out.println("Try to find first revision"); View CurrentView = TW.getDefaultView(); // / ExtractFullTreeFromRoot(CurrentView.getRootFolder(), "/", "C:/StarTeamToSVN"); } else { System.out.println("Project Tw not found in StarTeam repository"); } } else { System.out.println("LogOn to server failed :'("); } StarTeamServer.disconnect();
private static void ExtractFileHistory(com.starbase.starteam.File SourceFile, String SourceFolderName, String RootFolder) { Item[] FileHistory = SourceFile.getHistory(); for (Item CurrentHistoryItem : FileHistory) { com.starbase.starteam.File CurrentHistoryFile = (File) CurrentHistoryItem; String FullFileName = RootFolder + "/" + FormatOLEDATEToString(CurrentHistoryFile.getModifiedTime()) + "/Files" + SourceFolderName + CurrentHistoryFile.getName(); String FullPath = RootFolder + "/" + FormatOLEDATEToString(CurrentHistoryFile.getModifiedTime()) + "/Files" + SourceFolderName; String HistoryFileName = RootFolder + "/" + FormatOLEDATEToString(CurrentHistoryFile.getModifiedTime()) +"/@History.txt"; System.out.format("FileName = %s; Revision = %d; CreatedTime = %s; Author = %s; Comment = '%s';%n", FullFileName, CurrentHistoryFile.getRevisionNumber() + 1, FormatOLEDATEToString(CurrentHistoryFile.getModifiedTime()), FindAuthorNameById(CurrentHistoryFile.getModifiedBy()), CurrentHistoryFile.getComment()); FileOutputStream fop = null; java.io.File file; try { java.io.File directory = new java.io.File(FullPath); if (!directory.exists()) { directory.mkdirs(); } file = new java.io.File(FullFileName); fop = new FileOutputStream(file); CurrentHistoryFile.checkoutToStream(fop, com.starbase.starteam.Item.LockType.UNCHANGED, false); fop.flush(); fop.close(); java.io.File HistoryFile = new java.io.File(HistoryFileName); if (!HistoryFile.exists()) { PrintWriter out = new PrintWriter(HistoryFileName); out.println("AuthorID: " + CurrentHistoryFile.getModifiedBy()); out.println("AuthorName: " + FindAuthorNameById(CurrentHistoryFile.getModifiedBy())); out.println("TimeStamp: " + FormatOLEDATEToString(CurrentHistoryFile.getModifiedTime())); out.println("Comment: " + CurrentHistoryFile.getComment()); out.close(); } //System.out.println("Done"); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fop != null) { fop.close(); } } catch (IOException e) { e.printStackTrace(); } } } } private static void ExtractFullTreeFromRoot(com.starbase.starteam.Folder SourceFolder, String SourceFolderName, String RootFolder) { ExtractFilesFromFolder(SourceFolder, SourceFolderName, RootFolder); Item[] RootFolders = SourceFolder.getItems("Folder"); for (Item CurrentItem : RootFolders) { Folder CurrentFolder = (Folder)CurrentItem; ExtractFullTreeFromRoot(CurrentFolder, SourceFolderName+CurrentFolder.getPathFragment()+"/", RootFolder); } } private static void ExtractFilesFromFolder(com.starbase.starteam.Folder SourceFolder, String SourceFolderName, String RootFolder) { Item[] RootFiles = SourceFolder.getItems("File"); for (Item CurrentItem : RootFiles) { com.starbase.starteam.File MyFile = (File) CurrentItem; if (SourceFolderName.isEmpty()) { ExtractFileHistory(MyFile, "/", RootFolder); } else { ExtractFileHistory(MyFile, SourceFolderName, RootFolder); } } } private static String FormatOLEDATEToString(OLEDate SourceValue) { DateFormat formatter = new SimpleDateFormat("yyyy.MM.dd.HH.mm"); return formatter.format(SourceValue.createDate()); }
//1. - java.io.File dir = new java.io.File("C:/StarTeamToSVN"); java.io.File[] subDirs = dir.listFiles(new FileFilter() { @Override public boolean accept(java.io.File pathname) { return pathname.isDirectory(); } }); //2. Arrays.sort(subDirs); //3. //1. , //2. SVN //3. Files StarTeam SVN //4. SVN //5. java.io.File RootSVN = new java.io.File("C:\\TestASU"); for (java.io.File CurrentDir : subDirs){ try { ArrayList<java.io.File> MyFiles = new ArrayList<>(); String StarTeamSourceFolder = CurrentDir.getAbsolutePath()+"\\Files\\"; listf(StarTeamSourceFolder, MyFiles); ///String[] SVNAddFiles = new String[](); ArrayList<String> SVNAddFiles = new ArrayList<>(); for (java.io.File CurrentFile: MyFiles) { String FullSourcePath = CurrentFile.getAbsolutePath(); String FullDestPath = "C:\\TestASU\\" + FullSourcePath.substring(FullSourcePath.indexOf(StarTeamSourceFolder) + StarTeamSourceFolder.length()) ; // , java.io.File DestFile = new java.io.File(FullDestPath); java.io.File ParentFolder = DestFile.getParentFile(); while ((ParentFolder != null) && (ParentFolder.compareTo(RootSVN) != 0 )) { if (!ParentFolder.exists()) { SVNAddFiles.add(0, ParentFolder.getAbsolutePath()); } ParentFolder = ParentFolder.getParentFile(); } if (!DestFile.exists()) { SVNAddFiles.add(FullDestPath); } } // Set<String> s = new LinkedHashSet<>(SVNAddFiles); // java.io.File RootStarTeam = new java.io.File(StarTeamSourceFolder); try { copyFolder(RootStarTeam, RootSVN); } catch (IOException ex) { Logger.getLogger(StarTeamToSVN.class.getName()).log(Level.SEVERE, null, ex); } Thread.sleep(5000); // / for (String NewItem: s) { SVNAddFile(NewItem, CurrentDir.getName()); } // String HistoryPath = CurrentDir.getAbsolutePath() + "\\@History.txt"; String AuthorUserName = ""; String AuthorPassword = ""; String AuthorComment = ""; try { for (String line : Files.readAllLines(Paths.get(HistoryPath), Charset.defaultCharset())) { if (line.contains("AuthorID")) { String AuthorID = line.substring(line.indexOf(": ")+2); AuthorUserName = FindAuthorUserNameByID(Integer.parseInt(AuthorID)); AuthorPassword = FindAuthorPasswordNameByID(Integer.parseInt(AuthorID)); } if (line.contains("TimeStamp")) { AuthorComment = line.substring(line.indexOf(": ")+2); } if (line.contains("Comment")) { AuthorComment = AuthorComment + "\n" + line.substring(line.indexOf(": ")+2); } if (!line.contains(": ")) { AuthorComment = AuthorComment + "\n" + line; } } } catch (IOException ex) { Logger.getLogger(StarTeamToSVN.class.getName()).log(Level.SEVERE, null, ex); } if ((AuthorUserName == "")||(AuthorPassword == "")) { throw new IOException("Ho Authentification data"); } Thread.sleep(1000); SVNCommit("C:\\TestASU\\", CurrentDir.getName(), AuthorUserName, AuthorPassword, AuthorComment); } catch (InterruptedException ex) { Logger.getLogger(StarTeamToSVN.class.getName()).log(Level.SEVERE, null, ex); } }
Source: https://habr.com/ru/post/248239/