public static bool UpdateAttribute(EA.Repository rep, EA.Attribute a) { // no classifier defined if (a.ClassifierID == 0) { // find type from type_name int id = GetTypeId(rep, a.Type); if (id > 0) { a.ClassifierID = id; bool error = a.Update(); if (!error) { MessageBox.Show(@"Error write Attribute", a.GetLastError()); return false; } } } return true; }
//------------------------------------------------------------------------------------------ // resetVC If package is controlled: Reset package flags field of package //------------------------------------------------------------------------------------------ // package flags: Recurse=0;VCCFG=unchanged; public static void ResetVc(EA.Repository rep, EA.Package pkg) { if (pkg.IsVersionControlled) { // find VC=...; string flags = pkg.Flags; var pattern = new Regex(@"VCCFG=[^;]+;"); Match regMatch = pattern.Match(flags); if (regMatch.Success) { // delete old string flags = @"Recurse=0;" + regMatch.Value; } else { return; } // write flags try { SetVcFlags(rep, pkg, flags); } catch (Exception e) { string s = e.Message + " ;" + pkg.GetLastError(); s = s + "!"; MessageBox.Show(s, @"Error Reset VC"); } } // recursive package //foreach (EA.Package pkg1 in pkg.Packages) //{ // updateVC(rep, pkg1); //} }
public static bool GetLatest(EA.Repository rep, EA.Package pkg, bool recursive, ref int count, int level, ref int errorCount) { if (pkg.IsControlled) { level = level + 1; // check if checked out string path = GetVccFilePath(rep, pkg); string fText; //rep.WriteOutput("Debug", "Path:" + pkg.Name + path, 0); var sLevel = new string(' ', level * 2); rep.WriteOutput("Debug", sLevel + (count+1).ToString(",0") + " Work for:" + path, 0); if (path != "") { count = count + 1; rep.ShowInProjectView(pkg); // delete a potential write protection try { var fileInfo = new FileInfo(path); var attributes = (FileAttributes)(fileInfo.Attributes - FileAttributes.ReadOnly); System.IO.File.SetAttributes(fileInfo.FullName, attributes); System.IO.File.Delete(path); } catch (FileNotFoundException e) { fText = path + " " + e.Message; rep.WriteOutput("Debug", fText, 0); errorCount = errorCount + 1; } catch (DirectoryNotFoundException e) { fText = path + " " + e.Message; rep.WriteOutput("Debug", fText, 0); errorCount = errorCount + 1; } // get latest try { // to make sure pkg is the correct reference // new load of pkg after GetLatest string pkgGuid = pkg.PackageGUID; pkg.VersionControlGetLatest(true); pkg = rep.GetPackageByGuid(pkgGuid); count = count + 1; } catch { fText = path + " " + pkg.GetLastError(); rep.WriteOutput("Debug", fText, 0); errorCount = errorCount + 1; } } else { fText = pkg.XMLPath + " invalid path"; rep.WriteOutput("Debug", fText, 0); errorCount = errorCount + 1; } } //rep.WriteOutput("Debug", "Recursive:" +recursive.ToString(), 0); if (recursive) { //rep.WriteOutput("Debug","Recursive count:" + pkg.Packages.Count.ToString(), 0); // over all contained packages foreach (EA.Package pkgNested in pkg.Packages) { //rep.WriteOutput("Debug", "Recursive:"+ pkgNested.Name, 0); GetLatest(rep, pkgNested, true, ref count, level, ref errorCount); } } return true; }
/// <summary> /// Update VC (Version Control state of a controlled package: /// - Returns user name of user who have checked out the package /// - Updates the package flags /// </summary> /// <param name="rep">Repository</param> /// <param name="pkg">Package to check</param> public static string UpdateVc(EA.Repository rep, EA.Package pkg) { string userNameLockedPackage = ""; if (pkg.IsVersionControlled) { // find VC=...; // replace by: VC=currentState(); string flags = pkg.Flags; // remove check out flags flags = Regex.Replace(flags, @"VC=[^;]*;", ""); flags = Regex.Replace(flags, @"CheckedOutTo=[^;]*;", ""); var svnHandle = new Svn(rep, pkg); userNameLockedPackage = svnHandle.GetLockingUser(); if (userNameLockedPackage != "") flags = flags + "CheckedOutTo=" + userNameLockedPackage + ";"; try { SetVcFlags(rep, pkg, flags); rep.ShowInProjectView(pkg); } catch (Exception e) { string s = e.Message + " ;" + pkg.GetLastError(); s = s + "!"; MessageBox.Show(s, @"Error UpdateVC state"); } } return userNameLockedPackage; }