Subversion Repositories DevTools

Rev

Rev 918 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 918 Rev 924
Line 8... Line 8...
8
import java.util.ListIterator;
8
import java.util.ListIterator;
9
import java.util.Vector;
9
import java.util.Vector;
10
 
10
 
11
import org.apache.log4j.Logger;
11
import org.apache.log4j.Logger;
12
 
12
 
13
import java.util.regex.PatternSyntaxException;
-
 
14
 
-
 
15
/**Plans release impact by generating a set of Strings containing build file content.
13
/**Plans release impact by generating a set of Strings containing build file content.
16
 */
14
 */
17
public class RippleEngine
15
public class RippleEngine
18
{
16
{
19
  /**collection of gbemachtypes in String form associated with the baseline
17
  /**collection of gbemachtypes in String form associated with the baseline
Line 69... Line 67...
69
  /**Logger
67
  /**Logger
70
   * @attribute
68
   * @attribute
71
   */
69
   */
72
  private static final Logger mLogger = Logger.getLogger(RippleEngine.class);
70
  private static final Logger mLogger = Logger.getLogger(RippleEngine.class);
73
 
71
 
74
  /**collection of escrow clearcase support file content in String form, set_up
72
  /**collection of escrow support file content in String form, set_up
75
   * @attribute
73
   * @attribute
76
   */
74
   */
77
  private Vector<String> mEscrowClearcaseSupportCollection = new Vector<String>();
75
  private Vector<String> mEscrowSupportCollection = new Vector<String>();
78
 
76
 
79
  /**package versions representing the baseline
77
  /**package versions representing the baseline
80
   * escrow centric
78
   * escrow centric
81
   * @aggregation shared
79
   * @aggregation shared
82
   * @attribute
80
   * @attribute
Line 190... Line 188...
190
    mPackageCollection.removeAllElements();
188
    mPackageCollection.removeAllElements();
191
    mReleasedPvIDCollection.removeAllElements();
189
    mReleasedPvIDCollection.removeAllElements();
192
    
190
    
193
    if ( !mDaemon )
191
    if ( !mDaemon )
194
    {
192
    {
195
      mEscrowClearcaseSupportCollection.removeAllElements();  
193
      mEscrowSupportCollection.removeAllElements();  
196
    }
194
    }
197
 
195
 
198
    // use finally block in planRelease to ensure releaseMutex is called
196
    // use finally block in planRelease to ensure releaseMutex is called
199
    try
197
    try
200
    {
198
    {
Line 254... Line 252...
254
              p.mChangeType.setPatch();
252
              p.mChangeType.setPatch();
255
              p.mRequiresSourceControlInteraction = false;
253
              p.mRequiresSourceControlInteraction = false;
256
              rippleIndirectlyPlanned(p);
254
              rippleIndirectlyPlanned(p);
257
              
255
              
258
              // put the mTestBuildAttributes to work
256
              // put the mTestBuildAttributes to work
259
              p.mLabel = p.mTestBuildLabel;
257
              p.mVcsTag = p.mTestBuildVcsTag;
260
              p.mLocation = p.mTestBuildLocation;
-
 
261
              p.setEmail();
258
              p.setEmail();
262
              p.setDependencyCollection();
259
              p.setDependencyCollection();
263
              p.setBuildStandardCollection();
260
              p.setBuildStandardCollection();
264
            }
261
            }
265
          }
262
          }
Line 859... Line 856...
859
            }
856
            }
860
          }
857
          }
861
          
858
          
862
          if ( !mDaemon && buildFile == 1 )
859
          if ( !mDaemon && buildFile == 1 )
863
          {
860
          {
864
            // for the purposes of the set up, use /
-
 
865
            String loc = new String("");
-
 
866
            try
-
 
867
            {
-
 
868
              // The regular expression "\\\\" matches an escape character "\\" and a single backslash "\\"
-
 
869
              loc = p.mLocation.replaceAll("\\\\", "/");
-
 
870
            }
-
 
871
            catch( PatternSyntaxException e )
-
 
872
            {
-
 
873
            }
-
 
874
  
-
 
875
            set_up += "jats release -extractfiles"
861
        	  set_up += "jats jats_vcsrelease -extractfiles"
876
                      + " \"-label=" + p.mLabel + "\""
862
                      + " \"-label=" + p.mVcsTag + "\""
877
                      + " \"-path=" + loc + "\""
-
 
878
                      + " \"-view=" + p.mAlias + "\""
863
                      + " \"-view=" + p.mAlias + "\""
879
                      + " -root=. -noprefix"
864
                      + " -root=. -noprefix"
880
                      + lf;
865
                      + lf;
881
          }
866
          }
882
        }
867
        }
Line 889... Line 874...
889
                              "<target name=\"AbtPublish\"/>" + lf;
874
                              "<target name=\"AbtPublish\"/>" + lf;
890
        }
875
        }
891
        
876
        
892
        if ( !mDaemon && buildFile == 1 )
877
        if ( !mDaemon && buildFile == 1 )
893
        {
878
        {
894
          mEscrowClearcaseSupportCollection.add(set_up);
879
          mEscrowSupportCollection.add(set_up);
895
          mEscrowClearcaseSupportCollection.add(raw_data);
880
          mEscrowSupportCollection.add(raw_data);
896
        }
881
        }
897
        
882
        
898
        buildFileContent += generateDefaultTarget( buildFile);
883
        buildFileContent += generateDefaultTarget( buildFile);
899
        buildFileContent += generateBuildFileFooter();
884
        buildFileContent += generateBuildFileFooter();
900
  
885
  
Line 1142... Line 1127...
1142
      }
1127
      }
1143
    }
1128
    }
1144
    mLogger.info("rippleBuildExclude set " + p.mName + " " + p.mBuildFile);
1129
    mLogger.info("rippleBuildExclude set " + p.mName + " " + p.mBuildFile);
1145
  }
1130
  }
1146
 
1131
 
-
 
1132
  public String escapeXml( String xml )
-
 
1133
  {
-
 
1134
    xml = xml.replaceAll("&", "&amp;");
-
 
1135
    xml = xml.replaceAll("<", "&lt;");
-
 
1136
    xml = xml.replaceAll(">", "&gt;");
-
 
1137
    xml = xml.replaceAll("\"","&quot;");
-
 
1138
    xml = xml.replaceAll("'", "&apos;");
-
 
1139
    xml = xml.replaceAll("\\$", "\\$\\$");
-
 
1140
 
-
 
1141
    return xml;
-
 
1142
  }
-
 
1143
 
1147
  /**returns a build file header for the mBaseline
1144
  /**returns a build file header for the mBaseline
1148
   */
1145
   */
1149
  private String generateBuildFileHeader()
1146
  private String generateBuildFileHeader()
1150
  {
1147
  {
1151
    mLogger.debug("generateBuildFileHeader");
1148
    mLogger.debug("generateBuildFileHeader");
Line 1246... Line 1243...
1246
        // hard code 11 for unit test purposes
1243
        // hard code 11 for unit test purposes
1247
         majorVersionNumber = "11";
1244
         majorVersionNumber = "11";
1248
    }
1245
    }
1249
    
1246
    
1250
    retVal +=
1247
    retVal +=
1251
    "<property name=\"abt_release\" value=\"" + mBaselineName + "\"/>" + lf +
1248
    "<property name=\"abt_release\" value=\"" + escapeXml(mBaselineName) + "\"/>" + lf +
1252
    "<property name=\"abt_buildtool_version\" value=\""+ majorVersionNumber + "\"/>" + lf +
1249
    "<property name=\"abt_buildtool_version\" value=\""+ majorVersionNumber + "\"/>" + lf +
1253
    "<condition property=\"abt_family\" value=\"windows\">" + lf +
1250
    "<condition property=\"abt_family\" value=\"windows\">" + lf +
1254
    "  <os family=\"windows\"/>" + lf +
1251
    "  <os family=\"windows\"/>" + lf +
1255
    "</condition>" + lf +
1252
    "</condition>" + lf +
1256
    "<property name=\"abt_family\" value=\"unix\"/>" + lf;
1253
    "<property name=\"abt_family\" value=\"unix\"/>" + lf;
Line 1510... Line 1507...
1510
        {
1507
        {
1511
          retVal += p.mExtension;
1508
          retVal += p.mExtension;
1512
        }
1509
        }
1513
        
1510
        
1514
        retVal += "\"/>" + lf +
1511
        retVal += "\"/>" + lf +
1515
        "<property name=\"" + p.mAlias + "packagelabel\" value=\"" + p.mLabel + "\"/>" + lf;
1512
        "<property name=\"" + p.mAlias + "packagevcstag\" value=\"" + p.mVcsTag + "\"/>" + lf;
1516
        
1513
        
1517
        if ( p.mDirectlyPlanned )
1514
        if ( p.mDirectlyPlanned )
1518
        {
1515
        {
1519
          retVal += "<property name=\"" + p.mAlias + "directchange\" value=\"\"/>" + lf;
1516
          retVal += "<property name=\"" + p.mAlias + "directchange\" value=\"\"/>" + lf;
1520
        }
1517
        }
Line 1565... Line 1562...
1565
      
1562
      
1566
      if ( mDaemon && p.mBuildFile == 1 )
1563
      if ( mDaemon && p.mBuildFile == 1 )
1567
      {
1564
      {
1568
        retVal +=
1565
        retVal +=
1569
        "<target name=\"AbtSetUp\">" + lf +
1566
        "<target name=\"AbtSetUp\">" + lf +
1570
        "<property name=\"AbtSetUppackagelabel\" value=\"" + p.mLabel + "\"/>" + lf +
1567
        "<property name=\"AbtSetUppackagevcstag\" value=\"" + p.mVcsTag + "\"/>" + lf +
1571
        "<property name=\"AbtSetUppackagename\" value=\"" + p.mName + "\"/>" + lf +
1568
        "<property name=\"AbtSetUppackagename\" value=\"" + p.mName + "\"/>" + lf;
1572
        "<property name=\"AbtSetUppackageSrcPath\" value=\"" + p.mLocation.replace('\\', '/') + "\"/>" + lf;
-
 
1573
 
1569
 
1574
        retVal +=
1570
        retVal +=
1575
        "<abt>" + lf +
1571
        "<abt>" + lf +
1576
        p.emailInfo( lf ) +
1572
        p.emailInfo( lf ) +
1577
        "</abt>" + lf +
1573
        "</abt>" + lf +
1578
        "</target>" + lf;
1574
        "</target>" + lf;
1579
 
1575
 
1580
        retVal +=
1576
        retVal +=
1581
        "<target name=\"AbtTearDown\">" + lf +
1577
        "<target name=\"AbtTearDown\">" + lf +
1582
        "<property name=\"AbtTearDownpackagelabel\" value=\"" + p.mLabel + "\"/>" + lf +
1578
        "<property name=\"AbtTearDownpackagevcstag\" value=\"" + p.mVcsTag + "\"/>" + lf +
1583
        "<property name=\"AbtTearDownpackagename\" value=\"" + p.mName + "\"/>" + lf +
1579
        "<property name=\"AbtTearDownpackagename\" value=\"" + p.mName + "\"/>" + lf +
1584
        "<property name=\"AbtTearDownpackageversion\" value=\"" + p.mVersion + "\"/>" + lf +
1580
        "<property name=\"AbtTearDownpackageversion\" value=\"" + p.mVersion + "\"/>" + lf +
1585
        "<property name=\"AbtTearDownpackageextension\" value=\"";
1581
        "<property name=\"AbtTearDownpackageextension\" value=\"";
1586
        
1582
        
1587
        if ( p.mExtension.length() > 0 )
1583
        if ( p.mExtension.length() > 0 )
Line 1606... Line 1602...
1606
        buildInfo(p, lf, false) +
1602
        buildInfo(p, lf, false) +
1607
        p.emailInfo( lf ) +
1603
        p.emailInfo( lf ) +
1608
        "</abt>" + lf +
1604
        "</abt>" + lf +
1609
        "</target>" + lf +
1605
        "</target>" + lf +
1610
        "<target name=\"AbtPublish\">" + lf +
1606
        "<target name=\"AbtPublish\">" + lf +
1611
        "<property name=\"AbtPublishpackagelabel\" value=\"" + p.mLabel + "\"/>" + lf +
1607
        "<property name=\"AbtPublishpackagevcstag\" value=\"" + p.mVcsTag + "\"/>" + lf +
1612
        "<property name=\"AbtPublishpackagename\" value=\"" + p.mName + "\"/>" + lf +
1608
        "<property name=\"AbtPublishpackagename\" value=\"" + p.mName + "\"/>" + lf +
1613
        "<property name=\"AbtPublishpackageversion\" value=\"" + p.mVersion + "\"/>" + lf +
1609
        "<property name=\"AbtPublishpackageversion\" value=\"" + p.mVersion + "\"/>" + lf +
1614
        "<property name=\"AbtPublishpackageextension\" value=\"";
1610
        "<property name=\"AbtPublishpackageextension\" value=\"";
1615
        
1611
        
1616
        if ( p.mExtension.length() > 0 )
1612
        if ( p.mExtension.length() > 0 )
Line 1802... Line 1798...
1802
    mLogger.debug("getESCROWSetUp");
1798
    mLogger.debug("getESCROWSetUp");
1803
    String retVal = new String("");
1799
    String retVal = new String("");
1804
    
1800
    
1805
    try
1801
    try
1806
    {
1802
    {
1807
      if ( mEscrowClearcaseSupportCollection.size() >= 1 )
1803
      if ( mEscrowSupportCollection.size() >= 1 )
1808
      {
1804
      {
1809
        retVal = (String)mEscrowClearcaseSupportCollection.get(0);
1805
        retVal = (String)mEscrowSupportCollection.get(0);
1810
      }
1806
      }
1811
    }
1807
    }
1812
    catch( ArrayIndexOutOfBoundsException e )
1808
    catch( ArrayIndexOutOfBoundsException e )
1813
    {
1809
    {
1814
    }
1810
    }
Line 1824... Line 1820...
1824
    mLogger.debug("getRawData");
1820
    mLogger.debug("getRawData");
1825
    String retVal = new String("");
1821
    String retVal = new String("");
1826
    
1822
    
1827
    try
1823
    try
1828
    {
1824
    {
1829
      if ( mEscrowClearcaseSupportCollection.size() >= 2 )
1825
      if ( mEscrowSupportCollection.size() >= 2 )
1830
      {
1826
      {
1831
        retVal = (String)mEscrowClearcaseSupportCollection.get(1);
1827
        retVal = (String)mEscrowSupportCollection.get(1);
1832
      }
1828
      }
1833
    }
1829
    }
1834
    catch( ArrayIndexOutOfBoundsException e )
1830
    catch( ArrayIndexOutOfBoundsException e )
1835
    {
1831
    {
1836
    }
1832
    }
Line 1867... Line 1863...
1867
    String loc = new String("/");
1863
    String loc = new String("/");
1868
 
1864
 
1869
    if (mDaemon)
1865
    if (mDaemon)
1870
    {
1866
    {
1871
      // Daemon: Start in root of view/workspace
1867
      // Daemon: Start in root of view/workspace
1872
      loc += mBaseline + "/" + p.mLabel;
1868
      loc += mBaseline;
1873
    }
1869
    }
1874
    else
1870
    else
1875
    {
1871
    {
1876
      // mAlias used with jats -extractfiles -view
1872
      // mAlias used with jats -extractfiles -view
1877
      loc += p.mAlias;
1873
      loc += p.mAlias;