00001 package SummaryReader;
00002
00003
00004
00005 import java.io.*;
00006 import java.util.*;
00007 import java.util.regex.*;
00008 import java.text.*;
00009
00010 public class Reader implements regExpressions, DisplayGUI.TestDataInfo {
00011
00012
00013 Matcher matcher,matcher2;
00014 Test testObject;
00015 Vector testObjects;
00016 int parameterType;
00017 int testType;
00018 Map testMapping;
00019 java.text.DecimalFormat nf = new java.text.DecimalFormat("#.##");
00020 Pattern testregex;
00021
00022 public Reader(String serialNo,String resultString, DCSInfo dcsInfo) {
00023 testMapping = getTestMapping();
00024 getTestInfo(serialNo,resultString, dcsInfo);
00025 }
00026
00027
00028
00029
00030
00031
00032 public String getData(int index) {
00033 return testObject.getData(index);
00034 }
00035 public String getData() {
00036 return testObject.getData(-1);
00037 }
00038 public Test getTest() {
00039 return testObject;
00040 }
00041
00042
00043
00044
00045 public void getTestInfo(String serialNo,String resultString, DCSInfo dcsInfo) {
00046 boolean[] nextLineIsChipData = {false,false,false,false,false,false,false,false,false,false,false,false};
00047 boolean loopB=false;
00048 boolean nextLineIsLink0Data=false;
00049 boolean nextLineIsLink1Data=false;
00050 boolean nextLineIsVersion=false;
00051 boolean nextLineIsTime=false;
00052 boolean nextLineIsHost=false;
00053 boolean nextLineIsNoScans=false;
00054 boolean nextLineIsScanType=false;
00055 boolean nextLineIsScanPoints=false;
00056 boolean nextLineIsComment=false;
00057 boolean nextLineIsData=false;
00058 boolean nextLineIsT0T1=false;
00059 boolean nextLineIsVDETIDET=false;
00060 boolean nextLineIsVCCICC=false;
00061 boolean nextLineIsVDDIDD=false;
00062 boolean nextLineIsMarkSpaceRatio=false;
00063
00064 int linkData=-1;
00065
00066 int scanCount=0;
00067 int parameterIndex=-1;
00068 int byPassSection=-1;
00069 int byPassChipOffset=-1;
00070
00071
00072 testObject = new Test();
00073 IVData ivData=null;
00074 DataBlock dataBlock=null;
00075 LinkInfo linkInfo=null;
00076 DAQInfo daqInfo = new DAQInfo();
00077 TestInfo testInfo = new TestInfo();
00078 ScanInfo scanInfo = new ScanInfo();
00079 DefectInfo defectInfo = new DefectInfo();
00080 int testno=999;
00081
00082 int loopNo=-1;
00083
00084 String[] lines = resultString.split("\\n");
00085
00086 for(int i=0;i<lines.length;i++) {
00087 String line = lines[i];
00088 if(line.equals("")) continue;
00089
00090
00091
00092 if(line.matches("^%NewTest")) {
00093 testObject = new Test();
00094 continue;
00095 }
00096
00097 if(testObject==null) continue;
00098
00099
00100 matcher = serialNoPattern.matcher(line);
00101 if(matcher.matches()) {
00102 String thisSerialNo = line.substring(matcher.start(1),matcher.end(1));
00103 if(!thisSerialNo.startsWith("CRATE") && !thisSerialNo.equals(serialNo)) System.err.println("Invalid serial in SummaryWriter String");
00104 testObject.setSerialNo(serialNo);
00105 continue;
00106 }
00107
00108
00109 matcher = runPattern.matcher(line);
00110 if(matcher.matches()) {
00111 String runString = line.substring(matcher.start(1),matcher.end(1));
00112 matcher = scanNoPattern.matcher(runString);
00113 if(matcher.matches()) {
00114 testInfo.setRunNo(runString.substring(matcher.start(1),matcher.end(1)));
00115 testInfo.setScanNo(runString.substring(matcher.start(2),matcher.end(2)));
00116 }
00117 else {
00118 testInfo.setRunNo(runString);
00119 testInfo.setScanNo("None");
00120 }
00121 continue;
00122 }
00123
00124 matcher = testDatePattern.matcher(line);
00125 if(matcher.matches()) {
00126 daqInfo.put(DAQInfo.DATE,line.substring(matcher.start(1),matcher.end(1)));
00127 continue;
00128 }
00129
00130 matcher = passedPattern.matcher(line);
00131 if(matcher.matches()) {
00132 testInfo.setPassed(line.substring(matcher.start(1),matcher.end(1)));
00133 continue;
00134 }
00135 matcher = problemPattern.matcher(line);
00136 if(matcher.matches()) {
00137 testInfo.setProblem(line.substring(matcher.start(1),matcher.end(1)));
00138 continue;
00139 }
00140
00141 matcher = testregex.matcher(line);
00142 if(matcher.matches()) {
00143 String theTestType = line.substring(matcher.start()+1,matcher.end());
00144 testInfo.setName(theTestType);
00145 if(testMapping.containsKey(theTestType)) testno = ((Integer)testMapping.get(theTestType)).intValue();
00146 switch(testno) {
00147 case TEST_PIPELINE:
00148 dataBlock = new DataBlock("Number of Defective pipelines",1,testno);
00149 dataBlock.add(0,"#Channels");
00150 break;
00151 case TEST_FULLBYPASS:
00152 dataBlock = new DataBlock("FullBypass Data",testParameters[testno].length-parameterOffset,testno);
00153 for(int header=parameterOffset;header<testParameters[testno].length;header++) dataBlock.add(header-parameterOffset,testParameters[testno][header]);
00154 break;
00155 case TEST_STROBEDELAY:
00156 dataBlock = new DataBlock("Optimum Strobe Delays",1,testno);
00157 dataBlock.add(0,"Delay");
00158 break;
00159 case TEST_TRIM:
00160 dataBlock = new DataBlock("Trim Data",testParameters[testno].length-parameterOffset,testno);
00161 for(int header=parameterOffset;header<testParameters[testno].length;header++) dataBlock.add(header-parameterOffset,testParameters[testno][header]);
00162 break;
00163 case TEST_NOISE:
00164 dataBlock = new DataBlock("Noise Data",testParameters[testno].length-parameterOffset,testno);
00165 for(int header=parameterOffset;header<testParameters[testno].length;header++) dataBlock.add(header-parameterOffset,testParameters[testno][header]);
00166 break;
00167 case TEST_DOUBLETRIGGERNOISE:
00168 dataBlock = new DataBlock("DoubleTriggerNoise Data",testParameters[testno].length-parameterOffset,testno);
00169 for(int header=parameterOffset;header<testParameters[testno].length;header++) dataBlock.add(header-parameterOffset,testParameters[testno][header]);
00170 break;
00171 case TEST_TIMEWALK:
00172 dataBlock = new DataBlock("TimeWalk Data",testParameters[testno].length-parameterOffset,testno);
00173 for(int header=parameterOffset;header<testParameters[testno].length;header++) dataBlock.add(header-parameterOffset,testParameters[testno][header]);
00174 break;
00175 case TEST_RXTHRESHOLD:
00176 linkInfo = new LinkInfo(1);
00177 for(int header=parameterOffset;header<testParameters[testno].length;header++) linkInfo.addTitle(header-parameterOffset,testParameters[testno][header]);
00178 break;
00179 case TEST_RXTHRESHOLDBASEDONCONFIGREGISTER:
00180 linkInfo = new LinkInfo(3);
00181 for(int header=parameterOffset;header<testParameters[testno].length;header++) linkInfo.addTitle(header-parameterOffset,testParameters[testno][header]);
00182 break;
00183 case TEST_TXCURRENT:
00184 linkInfo = new LinkInfo(3);
00185 for(int header=parameterOffset;header<testParameters[testno].length;header++) linkInfo.addTitle(header-parameterOffset,testParameters[testno][header]);
00186 break;
00187 case TEST_RXDELAY:
00188 linkInfo = new LinkInfo(1);
00189 for(int header=parameterOffset;header<testParameters[testno].length;header++) linkInfo.addTitle(header-parameterOffset,testParameters[testno][header]);
00190 break;
00191 case TEST_MARKSPACERATIO:
00192 dataBlock = new DataBlock("MarkSpaceRatio",testParameters[testno].length-parameterOffset,testno);
00193 for(int header=parameterOffset;header<testParameters[testno].length;header++) dataBlock.add(header-parameterOffset,testParameters[testno][header]);
00194 break;
00195 case TEST_IV:
00196 ivData = new IVData(testObject.getSerialNo());
00197 break;
00198 default:
00199 }
00200 continue;
00201 }
00202
00203
00204 matcher = spacerPattern.matcher(line);
00205 if(matcher.matches()) line=line.substring(matcher.start(1),matcher.end(1));
00206 switch(testno) {
00207 case TEST_IV:
00208 Matcher matcher2 = ivDataPattern.matcher(line);
00209 if(matcher2.matches()) ivData.add(line.substring(matcher2.start(1),matcher2.end(1)),line.substring(matcher2.start(2),matcher2.end(2)));
00210 break;
00211 case TEST_PIPELINE:
00212 if(nextLineIsLink0Data || nextLineIsLink1Data) {
00213 String[] dataLine = line.split("\\s+");
00214 if(dataLine.length!=6) break;
00215 for(int j=0;j<dataLine.length;j++) {
00216 int index = nextLineIsLink1Data ? j+6 : j;
00217 try {
00218 int thisData = Integer.parseInt(dataLine[j]);
00219 thisData=128-thisData;
00220 dataLine[j]=Integer.toString(thisData);
00221 }catch(Exception e2){};
00222 dataBlock.add(index,0,dataLine[j]);
00223 }
00224 }
00225 nextLineIsLink0Data = line.startsWith("#M0");
00226 nextLineIsLink1Data = line.startsWith("#M8");
00227 break;
00228 case TEST_FULLBYPASS:
00229
00230
00231
00232
00233
00234
00235 if(line.matches("^#Comment$")) {
00236 byPassSection=1;
00237 byPassChipOffset=-1;
00238 }
00239 if(line.matches("^#token\\s+r_tkn\\s+token\\s+r_tkn$")) byPassSection=0;
00240 if(byPassSection<0) break;
00241
00242 if(byPassChipOffset!=-1) {
00243 String[] dataLine = (byPassSection==1) ? line.split("\\t+") : line.split("\\s+");
00244 if(dataLine.length!=4) break;
00245 int colOffset = byPassSection*2;
00246
00247 dataBlock.add((byPassChipOffset*2),0+colOffset,dataLine[0].replaceAll("\"",""));
00248 dataBlock.add((byPassChipOffset*2),1+colOffset,dataLine[1].replaceAll("\"",""));
00249 dataBlock.add((byPassChipOffset*2)+1,0+colOffset,dataLine[2].replaceAll("\"",""));
00250 dataBlock.add((byPassChipOffset*2)+1,1+colOffset,dataLine[3].replaceAll("\"",""));
00251 }
00252 byPassChipOffset=-1;
00253 for(int offset=0;offset<6;offset++) {
00254 if(line.matches(fullBypassChipPattern[offset])) {
00255 byPassChipOffset=offset;
00256 break;
00257 }
00258 }
00259 break;
00260
00261 case TEST_STROBEDELAY:
00262 if(nextLineIsLink0Data || nextLineIsLink1Data) {
00263 String[] dataLine = line.split("\\s+");
00264 if(dataLine.length!=6) break;
00265 for(int j=0;j<dataLine.length;j++) {
00266 int index = nextLineIsLink1Data ? j+6 : j;
00267 dataBlock.add(index,0,dataLine[j]);
00268 }
00269 }
00270 nextLineIsLink0Data = line.startsWith("#M0");
00271 nextLineIsLink1Data = line.startsWith("#M8");
00272 break;
00273 case TEST_MARKSPACERATIO:
00274 if(nextLineIsMarkSpaceRatio) {
00275 String[] dataLine = line.split("\\s+");
00276 if(dataLine.length!=1) {
00277 System.err.println("SctGUI::SummaryReader.Reader - data length="+dataLine.length+" for MarkSpaceRatio test");
00278 break;
00279 }
00280 for(int j=0;j<12;j++) dataBlock.add(j,0,dataLine[0]);
00281 }
00282 nextLineIsMarkSpaceRatio = line.startsWith("%Optimum");
00283 break;
00284 case TEST_3PTGAIN:
00285 case TEST_NPTGAIN:
00286 if(line.startsWith("#LoopA")) {
00287 loopNo++;
00288 dataBlock = new DataBlock("Fit Parameters",4,testno);
00289 dataBlock.add(0,"Function");
00290 dataBlock.add(1,"P0");
00291 dataBlock.add(2,"P1");
00292 dataBlock.add(3,"P2");
00293 continue;
00294 }
00295 if(line.startsWith("#LoopB")) {
00296 loopNo++;
00297 if(dataBlock!=null) testObject.add(dataBlock);
00298 dataBlock = new DataBlock("NPtGain Data",testParameters[testno].length-parameterOffset,testno);
00299 for(int header=parameterOffset;header<testParameters[testno].length;header++) dataBlock.add(header-parameterOffset,testParameters[testno][header]);
00300 continue;
00301 }
00302 for(int j=0;j<12;j++) {
00303 if(nextLineIsChipData[j]) {
00304 String[] dataLine = line.split("\\s+");
00305 if(dataLine.length==4 && loopNo==1) {
00306 for(int k=1;k<dataLine.length;k++) dataBlock.add(j,k+8,dataLine[k]);
00307 }
00308 else {
00309 for(int k=0;k<dataLine.length;k++) dataBlock.add(j,k,dataLine[k]);
00310 }
00311 }
00312 nextLineIsChipData[j] = (line.matches(chipNames[j]));
00313 }
00314 break;
00315 case TEST_TRIM:
00316 for(int j=0;j<12;j++) {
00317 if(nextLineIsChipData[j]) {
00318 String[] dataLine = line.split("\\s+");
00319 try {
00320 int thisData = Integer.parseInt(dataLine[2]);
00321 thisData=128-thisData;
00322 dataLine[2]=Integer.toString(thisData);
00323 }catch(Exception e2){};
00324 for(int k=0;k<dataLine.length;k++) dataBlock.add(j,k,dataLine[k]);
00325 }
00326 nextLineIsChipData[j] = (line.matches(chipNames[j]));
00327 }
00328 break;
00329 case TEST_NOISE:
00330 for(int j=0;j<12;j++) {
00331 if(nextLineIsChipData[j]) {
00332 matcher2 = opeToolPattern.matcher(line);
00333 if(matcher2.matches()) line=line.substring(matcher2.start(1),matcher2.end(1));
00334 String[] dataLine = line.split("\\s+");
00335 for(int k=0;k<dataLine.length;k++) {
00336 try {
00337 if(k==1 || k==2) dataLine[k]= (new java.text.DecimalFormat("0.##E0")).format(Double.parseDouble(dataLine[k]));
00338 }catch(Exception ne){dataLine[k]="0.";}
00339 if(dataLine.length==4) dataBlock.add(j,k,dataLine[k]);
00340 else if(dataLine.length==2) dataBlock.add(j,k+4,dataLine[k]);
00341 else {System.err.println("SctGUI SummaryReader::Reader - Invalid data in summaryWriter String");}
00342 }
00343 }
00344 nextLineIsChipData[j] = (line.matches(chipNames[j]));
00345 }
00346 break;
00347 case TEST_DOUBLETRIGGERNOISE:
00348 for(int j=0;j<12;j++) {
00349 if(nextLineIsChipData[j]) {
00350 String[] dataLine = line.split("\\s+");
00351 if(dataLine.length!=4) {
00352 System.out.println("SctGUI - invalid data in DOUBLETRIGGERNOISE summary file.");
00353 continue;
00354 }
00355 for(int k=0;k<dataLine.length;k++) {
00356 try {
00357 dataLine[k]= (new java.text.DecimalFormat("0.##E0")).format(Double.parseDouble(dataLine[k]));
00358 }catch(Exception ne){dataLine[k]="0.";}
00359 dataBlock.add(j,k,dataLine[k]);
00360 }
00361 }
00362 nextLineIsChipData[j] = (line.matches(chipNames[j]));
00363 }
00364 break;
00365 case TEST_TIMEWALK:
00366 if(line.startsWith("#TW")) parameterIndex=0;
00367 if(line.startsWith("#TCAL")) parameterIndex=1;
00368
00369 if(nextLineIsLink0Data || nextLineIsLink1Data) {
00370 String[] dataLine = line.split("\\s+");
00371 if(dataLine.length!=6) break;
00372 for(int j=0;j<dataLine.length;j++) {
00373 int index = nextLineIsLink1Data ? j+6 : j;
00374 dataBlock.add(index,parameterIndex,dataLine[j]);
00375 }
00376 }
00377 nextLineIsLink0Data = line.startsWith("#M0");
00378 nextLineIsLink1Data = line.startsWith("#M8");
00379 break;
00380 case TEST_RXTHRESHOLD:
00381 if(nextLineIsData) {
00382 Matcher matcher = bocPattern.matcher(line);
00383 if(matcher.matches()) {
00384 String s = line.substring(matcher.start(1),matcher.end(1));
00385 linkInfo.add(0,s);
00386 s = line.substring(matcher.start(2),matcher.end(2));
00387 linkInfo.add(1,s);
00388 }
00389 }
00390 nextLineIsData = line.startsWith("#Thresholds");
00391 break;
00392 case TEST_RXTHRESHOLDBASEDONCONFIGREGISTER:
00393 matcher = linkInfoPattern.matcher(line);
00394 if(matcher.matches()) {
00395 linkData = Integer.parseInt(line.substring(matcher.start(1),matcher.end(1)));
00396 if(linkData<0 || linkData>1) {
00397 System.err.println("sctGUI:: Invalid link number in summaryWriter string");
00398 linkData=-1;
00399 }
00400 }
00401 if(linkData!=-1) {
00402 Matcher matcher = rxthrconfigDataPattern.matcher(line);
00403 if(matcher.matches()) {
00404 for(int match=0;match<3;match++) {
00405 String value = line.substring(matcher.start(match+1),matcher.end(match+1));
00406 linkInfo.add(linkData,match,value);
00407 }
00408 linkData=-1;
00409 }
00410 }
00411 break;
00412 case TEST_TXCURRENT:
00413 matcher = linkInfoPattern.matcher(line);
00414 if(matcher.matches()) {
00415 linkData = Integer.parseInt(line.substring(matcher.start(1),matcher.end(1)));
00416 if(linkData<0 || linkData>1) {
00417 System.err.println("sctGUI:: Invalid link number in summaryWriter string");
00418 linkData=-1;
00419 }
00420 }
00421 if(linkData!=-1) {
00422 Matcher matcher = txcurrentDataPattern.matcher(line);
00423 if(matcher.matches()) {
00424 for(int match=0;match<3;match++) {
00425 String value = line.substring(matcher.start(match+1),matcher.end(match+1));
00426 linkInfo.add(linkData,match,value);
00427 }
00428 linkData=-1;
00429 }
00430 }
00431 break;
00432
00433 case TEST_RXDELAY:
00434 if(nextLineIsData) {
00435 Matcher matcher = bocPattern.matcher(line);
00436 if(matcher.matches()) {
00437 String s = line.substring(matcher.start(1),matcher.end(1));
00438 linkInfo.add(0,s);
00439 s = line.substring(matcher.start(2),matcher.end(2));
00440 linkInfo.add(1,s);
00441 }
00442 }
00443 nextLineIsData = line.startsWith("#Delays");
00444 break;
00445 default:
00446 }
00447 if(nextLineIsScanPoints) {
00448 if(line.startsWith("%") || line.startsWith("#")) {
00449 nextLineIsScanPoints=false;
00450 continue;
00451 }
00452 try {
00453 String[] scanPoints = line.split("\\s+");
00454 for(int k=0;k<scanPoints.length;k++) {
00455 scanInfo.setScanPoint(scanCount+k,scanPoints[k]);
00456 }
00457 scanCount+=scanPoints.length;
00458 continue;
00459 }catch(Exception e3){}
00460 }
00461
00462 matcher = defectNamePattern.matcher(line);
00463 if(matcher.matches()) {
00464 defectInfo = new DefectInfo();
00465 defectInfo.setName(line.substring(matcher.start(1),matcher.end(1)));
00466 continue;
00467 }
00468 matcher = defectNameDefect0.matcher(line);
00469 if(matcher.matches()) {
00470 defectInfo.setFirstChannel(line.substring(matcher.start(1),matcher.end(1)));
00471 continue;
00472 }
00473 matcher = defectNameDefect1.matcher(line);
00474 if(matcher.matches()) {
00475 defectInfo.setLastChannel(line.substring(matcher.start(1),matcher.end(1)));
00476 testObject.add(defectInfo);
00477 continue;
00478 }
00479
00480 if(nextLineIsComment) {
00481 matcher = commentsPattern.matcher(line);
00482 if(matcher.matches()) testObject.addComment(line.substring(matcher.start(1),matcher.end(1)));
00483 }
00484
00485
00486 if(nextLineIsVersion) daqInfo.put(DAQInfo.VERSION,line);
00487 if(nextLineIsTime) daqInfo.put(DAQInfo.TIME,line.replaceAll("\"",""));
00488 if(nextLineIsHost) daqInfo.put(DAQInfo.HOST,line.replaceAll("\"",""));
00489 if(nextLineIsScanType) scanInfo.setType(line);
00490 if(nextLineIsNoScans) scanInfo.setPoints(line);
00491
00492 if(nextLineIsT0T1) {
00493 String[] data = line.split("[\\s\\r\\n]");
00494 if(data.length==2) {
00495 if(dcsInfo==null) dcsInfo=new DCSInfo();
00496 try {
00497 dcsInfo.put(DCSInfo.T0,nf.format(Double.parseDouble(data[0])));
00498 dcsInfo.put(DCSInfo.T1,nf.format(Double.parseDouble(data[1])));
00499 }catch(Exception e){}
00500 }
00501 }
00502 if(nextLineIsVCCICC) {
00503 String[] data = line.split("[\\s\\r\\n]");
00504 if(data.length==2) {
00505 if(dcsInfo==null) dcsInfo=new DCSInfo();
00506 try {
00507 dcsInfo.put(DCSInfo.VCC,nf.format(Double.parseDouble(data[0])));
00508 dcsInfo.put(DCSInfo.ICC,nf.format(Double.parseDouble(data[1])));
00509 }catch(Exception e){}
00510 }
00511 }
00512 if(nextLineIsVDDIDD) {
00513 String[] data = line.split("[\\s\\r\\n]");
00514 if(data.length==2) {
00515 if(dcsInfo==null) dcsInfo=new DCSInfo();
00516 try {
00517 dcsInfo.put(DCSInfo.VDD,nf.format(Double.parseDouble(data[0])));
00518 dcsInfo.put(DCSInfo.IDD,nf.format(Double.parseDouble(data[1])));
00519 }catch(Exception e){}
00520 }
00521 }
00522 if(nextLineIsVDETIDET) {
00523 String[] data = line.split("[\\s\\r\\n]");
00524 if(data.length==2) {
00525 if(dcsInfo==null) dcsInfo=new DCSInfo();
00526 try {
00527 dcsInfo.put(DCSInfo.VDET,nf.format(Double.parseDouble(data[0])));
00528 dcsInfo.put(DCSInfo.IDET,nf.format( Double.valueOf(data[1]).doubleValue()/1000. ));
00529 }catch(Exception e){}
00530 }
00531 }
00532
00533 nextLineIsVersion = line.matches("^[\\s#]?VERSION.*");
00534 nextLineIsTime = line.matches("^#TIME$");
00535 nextLineIsHost = line.matches("^#HOST$");
00536 nextLineIsScanType = line.matches("^#POINT_TYPE$");
00537 nextLineIsNoScans = line.matches("^#N_POINTS$");
00538 nextLineIsScanPoints = line.matches("^#POINTS$");
00539 nextLineIsComment = line.matches("^%Comment$");
00540 nextLineIsT0T1 = line.matches("^#T0\\s+T1.*");
00541 nextLineIsVDETIDET = line.matches("^#VDET\\s+IDET.*");
00542 nextLineIsVCCICC = line.matches("^#VCC\\s+ICC.*");
00543 nextLineIsVDDIDD = line.matches("^#VDD\\s+IDD.*");
00544
00545
00546 }
00547 if(dataBlock!=null) testObject.add(dataBlock);
00548 if(ivData!=null) testObject.add(ivData);
00549 if(dcsInfo!=null) testObject.add(dcsInfo);
00550 if(linkInfo!=null) testObject.add(linkInfo);
00551 testObject.add(testInfo);
00552 testObject.add(daqInfo);
00553 testObject.add(scanInfo);
00554 }
00555
00556 private Map getTestMapping() {
00557 Map mapping = new HashMap();
00558 StringBuffer testregExpr = new StringBuffer();
00559 int count=0;
00560 for(int i=0;i<resultFileKeyNames.length;i++) {
00561 if(!resultFileKeyNames[i].equals("")) {
00562 mapping.put(resultFileKeyNames[i],new Integer(i));
00563 if(count>0) testregExpr.append("|");
00564 testregExpr.append("%"+resultFileKeyNames[i]);
00565 count++;
00566 }
00567 }
00568 String theTestRegex = "("+testregExpr.toString()+")";
00569
00570 testregex=Pattern.compile(theTestRegex);
00571 return mapping;
00572 }
00573
00574
00575
00576
00577
00578 }
00579