001/*
002 * To change this template, choose Tools | Templates
003 * and open the template in the editor.
004 */
005
006package armyc2.c2sd.JavaLineArray;
007import java.util.ArrayList;
008import armyc2.c2sd.renderer.utilities.ErrorLogger;
009import armyc2.c2sd.renderer.utilities.RendererException;
010import armyc2.c2sd.renderer.utilities.RendererSettings;
011/**
012 * A class for the interface between the points calculation CELineArray and
013 * the tactical renderer.
014 *
015 * @author Michael Deutch
016 */
017public final class CELineArray {
018    private static final String _className="CELineArray";
019    /**
020     * Client interface function, called by tactical renderer clsChannelUtility
021     * @param lpsaUpperVBPoints the client points as an array of 2-tuples: x pixels, y pixels
022     * @param lpsaLowerVBPoints generally the same as the upper points
023     * @param resultVBPoints calculated points to return as 3 tuples: x,y,linestyle
024     * @param vblUpperCounter the number of client points
025     * @param vblLowerCounter the number of client points
026     * @param vbiDrawThis the line type as a hierarchy
027     * @param vblChannelWidth the channel width in pixels
028     * @param usePtr currently being used as the distance from the this to the back of the arrowhead
029     * @param shapes ShapeInfo object to return which will contain the GeneralPath for the line
030     * @return the point count for the return array
031     */
032    public static int CGetChannel2Double(double[] lpsaUpperVBPoints,
033            double[] lpsaLowerVBPoints,
034            double[] resultVBPoints,
035            int vblUpperCounter,
036            int vblLowerCounter,
037            int vbiDrawThis,
038            int vblChannelWidth,
039            int usePtr,
040            ArrayList<Shape2>shapes,
041            int rev) throws Exception
042    {
043        int lResult = -1;
044
045        try {
046            lResult = Channels.GetChannel1Double(lpsaUpperVBPoints,
047                    lpsaLowerVBPoints,
048                    resultVBPoints,
049                    vblUpperCounter,
050                    vblLowerCounter,
051                    vbiDrawThis,
052                    vblChannelWidth,
053                    usePtr,
054                    shapes,
055                    rev);
056
057            //GC.Collect();
058        } catch (Exception exc) {
059            ErrorLogger.LogException(_className ,"CGetChannel2Double",
060                    new RendererException("Failed inside CGetChannel2Double " + Integer.toString(vbiDrawThis), exc));
061        }
062        return lResult;
063    }
064    /**
065    * public function to return the line count required for all of the symbols
066    *
067    * @param plArrayOfLongs the client points as an array of POINT2 in pixels.
068    * @param lElements the number of client points.
069    * @param lineType the line type
070    * @param ChannelWdith the chanel width in pixels
071    * @param rev the Mil-Standard-2525 revision 
072    *
073    * @return the number of points which will be required for the symbol.
074    */
075    public static int CGetLineCountDouble(double[] plArrayOfLongs,
076            int lElements, //number of points
077            int lineType,
078            int ChannelWidth,
079            int rev) {
080        int lResult = 0;
081        try {
082            //declarations
083            int lPtrcntr = 0;
084            int lLowerFlotCount = 0, lUpperFlotCount = 0;
085            POINT2[] pLinePoints = new POINT2[lElements];
086            POINT2[] pLowerLinePoints = new POINT2[lElements],
087                    pUpperLinePoints = new POINT2[lElements],
088                    pUpperLowerLinePoints = new POINT2[2 * lElements + 2];
089            short i = 0;
090            //end declarations
091
092            if (lElements <= 0) {
093                return -1;
094            }
095
096            lineutility.InitializePOINT2Array(pLinePoints);
097            lineutility.InitializePOINT2Array(pUpperLinePoints);
098            lineutility.InitializePOINT2Array(pLowerLinePoints);
099            for (i = 0; i < lElements; i++) {
100                pLinePoints[i].x = plArrayOfLongs[lPtrcntr];
101                lPtrcntr++;
102                pLinePoints[i].y = plArrayOfLongs[lPtrcntr];
103                lPtrcntr++;
104            }
105            for (i = 0; i < lElements; i++) {
106                pLowerLinePoints[i] = new POINT2(pLinePoints[i]);
107                pUpperLinePoints[i] = new POINT2(pLinePoints[i]);
108            }
109
110            switch (lineType) {
111                case TacticalLines.CHANNEL:
112                case TacticalLines.CHANNEL_FLARED:
113                case TacticalLines.CHANNEL_DASHED:
114                    lResult = 2 * lElements;
115                    break;
116                case TacticalLines.AXAD:
117                case TacticalLines.MAIN:
118                case TacticalLines.MAIN_STRAIGHT:
119                case TacticalLines.AAFNT:
120                case TacticalLines.AAFNT_STRAIGHT:
121                case TacticalLines.AIRAOA:
122                case TacticalLines.SPT:
123                case TacticalLines.SPT_STRAIGHT:
124                    //points for these need not be bounded
125                    //they have an extra 8 points for the arrowhead
126                    lResult = 2 * lElements + 8;
127                    break;
128                case TacticalLines.CATK:
129                    lResult = 2 * lElements + 8;
130                    break;
131                case TacticalLines.CATKBYFIRE:
132                    lResult = 2 * lElements + 17;
133                    break;
134                case TacticalLines.AAAAA:
135                    lResult = 2 * lElements + 19;
136                    break;
137                case TacticalLines.LC:
138                    pUpperLinePoints = Channels.GetChannelArray2Double(1, pUpperLinePoints, 1, lElements, lineType, ChannelWidth);
139                    pLowerLinePoints = Channels.GetChannelArray2Double(1, pLowerLinePoints, 0, lElements, lineType, ChannelWidth);
140                    lUpperFlotCount = flot.GetFlotCountDouble(pUpperLinePoints, lElements);
141                    lLowerFlotCount = flot.GetFlotCountDouble(pLowerLinePoints, lElements);
142                    lResult = lUpperFlotCount + lLowerFlotCount;
143                    break;
144                default:
145                    //call GetCountersDouble for the remaining line types.
146                    lResult = countsupport.GetCountersDouble(lineType, lElements, pLinePoints, null,rev);
147                    break;
148            }
149
150
151            //clean up
152            //pvblCounters = null;
153            pLinePoints = null;
154            pLowerLinePoints = null;
155            pUpperLinePoints = null;
156            pUpperLowerLinePoints = null;
157            //GC.Collect();
158        } catch (Exception exc) {
159            ErrorLogger.LogException(_className ,"CGetLineCountDouble",
160                    new RendererException("Failed inside CGetLineCount " + Integer.toString(lineType), exc));
161        }
162        return (lResult);
163    }
164    /**
165     * Return the line type as a hierarchy from the 15 character Mil-Standard-2525 symbol code
166     * @param strLine
167     * @param rev the Mil-Standard-2525 revision
168     * @return
169     */
170    public static int CGetLinetypeFromString(String strLine,
171            int rev)
172    {
173        try
174        {
175            //added this section so the SEC tester can test from generic names
176            //these strings will not be used by the CPOF client            
177            if(strLine.length()<15)
178            {
179                if(rev==RendererSettings.Symbology_2525C)
180                {
181                    if(strLine.equalsIgnoreCase("SCREEN"))
182                        return TacticalLines.SCREEN_REVC;
183                    if(strLine.equalsIgnoreCase("COVER"))
184                        return TacticalLines.COVER_REVC;
185                    if(strLine.equalsIgnoreCase("GUARD"))
186                        return TacticalLines.GUARD_REVC;                    
187                    if(strLine.equalsIgnoreCase("SEIZE"))
188                        return TacticalLines.SEIZE_REVC;                    
189                }
190                if(strLine.equalsIgnoreCase("BS_LINE"))
191                    return TacticalLines.BS_LINE;
192                if(strLine.equalsIgnoreCase("BS_AREA"))
193                    return TacticalLines.BS_AREA;
194                if(strLine.equalsIgnoreCase("BS_CROSS"))
195                    return TacticalLines.BS_CROSS;
196                if(strLine.equalsIgnoreCase("BS_RECTANGLE"))
197                    return TacticalLines.BS_RECTANGLE;
198                if(strLine.equalsIgnoreCase("PBS_RECTANGLE"))
199                    return TacticalLines.PBS_RECTANGLE;
200                if(strLine.equalsIgnoreCase("PBS_SQUARE"))
201                    return TacticalLines.PBS_SQUARE;
202                //buffered lines
203                if(strLine.equalsIgnoreCase("BBS_LINE"))
204                    return TacticalLines.BBS_LINE;
205                if(strLine.equalsIgnoreCase("BBS_AREA"))
206                    return TacticalLines.BBS_AREA;
207                if(strLine.equalsIgnoreCase("BBS_POINT"))
208                    return TacticalLines.BBS_POINT;
209                if(strLine.equalsIgnoreCase("BBS_RECTANGLE"))
210                    return TacticalLines.BBS_RECTANGLE;
211                if(strLine.equalsIgnoreCase("BS_BBOX"))
212                    return TacticalLines.BS_BBOX;
213                
214                if(strLine.equalsIgnoreCase("BS_ELLIPSE"))
215                    return TacticalLines.BS_ELLIPSE;
216                if(strLine.equalsIgnoreCase("PBS_ELLIPSE"))
217                    return TacticalLines.PBS_ELLIPSE;
218                if(strLine.equalsIgnoreCase("PBS_CIRCLE"))
219                    return TacticalLines.PBS_CIRCLE;
220                if(strLine.equalsIgnoreCase("OVERHEAD_WIRE"))
221                    return TacticalLines.OVERHEAD_WIRE;
222                if(strLine.equalsIgnoreCase("CORDONSEARCH"))
223                    return TacticalLines.CORDONSEARCH;
224                if(strLine.equalsIgnoreCase("CORDONKNOCK"))
225                    return TacticalLines.CORDONKNOCK;
226                if(strLine.equalsIgnoreCase("NAVIGATION"))
227                    return TacticalLines.NAVIGATION;
228                if(strLine.equalsIgnoreCase("BLOCK"))
229                    return TacticalLines.BLOCK;
230                if(strLine.equalsIgnoreCase("BREACH"))
231                    return TacticalLines.BREACH;
232                if(strLine.equalsIgnoreCase("BYPASS"))
233                    return TacticalLines.BYPASS;
234                if(strLine.equalsIgnoreCase("CANALIZE"))
235                    return TacticalLines.CANALIZE;
236                if(strLine.equalsIgnoreCase("CLEAR"))
237                    return TacticalLines.CLEAR;
238                if(strLine.equalsIgnoreCase("CONTAIN"))
239                    return TacticalLines.CONTAIN;
240                if(strLine.equalsIgnoreCase("CATK"))
241                    return TacticalLines.CATK;
242                if(strLine.equalsIgnoreCase("CATKBYFIRE"))
243                    return TacticalLines.CATKBYFIRE;
244                if(strLine.equalsIgnoreCase("DELAY"))
245                    return TacticalLines.DELAY;
246                if(strLine.equalsIgnoreCase("DISRUPT"))
247                    return TacticalLines.DISRUPT;
248                if(strLine.equalsIgnoreCase("FIX"))
249                    return TacticalLines.FIX;
250                if(strLine.equalsIgnoreCase("FOLLA"))
251                    return TacticalLines.FOLLA;
252                if(strLine.equalsIgnoreCase("FOLSP"))
253                    return TacticalLines.FOLSP;
254                if(strLine.equalsIgnoreCase("ISOLATE"))
255                    return TacticalLines.ISOLATE;
256                if(strLine.equalsIgnoreCase("OCCUPY"))
257                    return TacticalLines.OCCUPY;
258                if(strLine.equalsIgnoreCase("RIP"))
259                    return TacticalLines.RIP;
260                if(strLine.equalsIgnoreCase("RETAIN"))
261                    return TacticalLines.RETAIN;
262                if(strLine.equalsIgnoreCase("RETIRE"))
263                    return TacticalLines.RETIRE;
264                if(strLine.equalsIgnoreCase("SECURE"))
265                    return TacticalLines.SECURE;
266                if(strLine.equalsIgnoreCase("SCREEN"))
267                    return TacticalLines.SCREEN;
268                if(strLine.equalsIgnoreCase("COVER"))
269                    return TacticalLines.COVER;
270                if(strLine.equalsIgnoreCase("GUARD"))
271                    return TacticalLines.GUARD;
272                if(strLine.equalsIgnoreCase("SEZIE"))
273                    return TacticalLines.SEIZE;
274                if(strLine.equalsIgnoreCase("WITHDRAW"))
275                    return TacticalLines.WITHDRAW;
276                if(strLine.equalsIgnoreCase("WDRAWUP"))
277                    return TacticalLines.WDRAWUP;
278
279                if(strLine.equalsIgnoreCase("BOUNDARY"))
280                    return TacticalLines.BOUNDARY;
281                if(strLine.equalsIgnoreCase("FLOT"))
282                    return TacticalLines.FLOT;
283                if(strLine.equalsIgnoreCase("LC"))
284                    return TacticalLines.LC;
285                if(strLine.equalsIgnoreCase("PL"))
286                    return TacticalLines.PL;
287                if(strLine.equalsIgnoreCase("LL"))
288                    return TacticalLines.LL;
289                if(strLine.equalsIgnoreCase("GENERAL"))
290                    return TacticalLines.GENERAL;
291                if(strLine.equalsIgnoreCase("GENERIC"))
292                    return TacticalLines.GENERIC;
293                if(strLine.equalsIgnoreCase("ASSY"))
294                    return TacticalLines.ASSY;
295                if(strLine.equalsIgnoreCase("EA"))
296                    return TacticalLines.EA;
297                if(strLine.equalsIgnoreCase("FORT"))
298                    return TacticalLines.FORT;
299                if(strLine.equalsIgnoreCase("DZ"))
300                    return TacticalLines.DZ;
301                if(strLine.equalsIgnoreCase("EZ"))
302                    return TacticalLines.EZ;
303                if(strLine.equalsIgnoreCase("LZ"))
304                    return TacticalLines.LZ;
305                if(strLine.equalsIgnoreCase("PZ"))
306                    return TacticalLines.PZ;
307                if(strLine.equalsIgnoreCase("SARA"))
308                    return TacticalLines.SARA;
309                if(strLine.equalsIgnoreCase("LAA"))
310                    return TacticalLines.LAA;
311                if(strLine.equalsIgnoreCase("AIRFIELD"))
312                    return TacticalLines.AIRFIELD;
313                if(strLine.equalsIgnoreCase("AC"))
314                    return TacticalLines.AC;
315                if(strLine.equalsIgnoreCase("MRR"))
316                    return TacticalLines.MRR;
317                if(strLine.equalsIgnoreCase("MRR_USAS"))
318                    return TacticalLines.MRR_USAS;
319                if(strLine.equalsIgnoreCase("SAAFR"))
320                    return TacticalLines.SAAFR;
321                if(strLine.equalsIgnoreCase("UAV"))
322                    return TacticalLines.UAV;
323                if(strLine.equalsIgnoreCase("UAV_USAS"))
324                    return TacticalLines.UAV_USAS;
325                if(strLine.equalsIgnoreCase("LLTR"))
326                    return TacticalLines.LLTR;
327
328                if(strLine.equalsIgnoreCase("ROZ"))
329                    return TacticalLines.ROZ;
330                if(strLine.equalsIgnoreCase("SHORADZ"))
331                    return TacticalLines.FAADZ;
332                if(strLine.equalsIgnoreCase("FAADZ"))
333                    return TacticalLines.FAADZ;
334                if(strLine.equalsIgnoreCase("HIDACZ"))
335                    return TacticalLines.HIDACZ;
336                if(strLine.equalsIgnoreCase("MEZ"))
337                    return TacticalLines.MEZ;
338                if(strLine.equalsIgnoreCase("LOMEZ"))
339                    return TacticalLines.LOMEZ;
340                if(strLine.equalsIgnoreCase("HIMEZ"))
341                    return TacticalLines.HIMEZ;
342                if(strLine.equalsIgnoreCase("WFZ"))
343                    return TacticalLines.WFZ;
344                if(strLine.equalsIgnoreCase("DECEIVE"))
345                    return TacticalLines.DECEIVE;
346                if(strLine.equalsIgnoreCase("AAFNT"))
347                    return TacticalLines.AAFNT;
348                if(strLine.equalsIgnoreCase("DIRATKFNT"))
349                    return TacticalLines.DIRATKFNT;
350                if(strLine.equalsIgnoreCase("DMA"))
351                    return TacticalLines.DMA;
352                if(strLine.equalsIgnoreCase("DMAF"))
353                    return TacticalLines.DMAF;
354                if(strLine.equalsIgnoreCase("DUMMY"))
355                    return TacticalLines.DUMMY;
356                if(strLine.equalsIgnoreCase("FEBA"))
357                    return TacticalLines.FEBA;
358                if(strLine.equalsIgnoreCase("PDF"))
359                    return TacticalLines.PDF;
360                if(strLine.equalsIgnoreCase("BATTLE"))
361                    return TacticalLines.BATTLE;
362                if(strLine.equalsIgnoreCase("PNO"))
363                    return TacticalLines.PNO;
364                if(strLine.equalsIgnoreCase("EA1"))
365                    return TacticalLines.EA1;
366                if(strLine.equalsIgnoreCase("AXAD"))
367                    return TacticalLines.AXAD;
368                if(strLine.equalsIgnoreCase("AIRAOA"))
369                    return TacticalLines.AIRAOA;
370                if(strLine.equalsIgnoreCase("AAAAA"))
371                    return TacticalLines.AAAAA;
372                if(strLine.equalsIgnoreCase("ROTARY"))
373                    return TacticalLines.AAAAA;
374                if(strLine.equalsIgnoreCase("MAIN"))
375                    return TacticalLines.MAIN;
376                if(strLine.equalsIgnoreCase("SPT"))
377                    return TacticalLines.SPT;
378                if(strLine.equalsIgnoreCase("DIRATKAIR"))
379                    return TacticalLines.DIRATKAIR;
380                if(strLine.equalsIgnoreCase("DIRATKGND"))
381                    return TacticalLines.DIRATKGND;
382                if(strLine.equalsIgnoreCase("DIRATKSPT"))
383                    return TacticalLines.DIRATKSPT;
384
385                if(strLine.equalsIgnoreCase("FCL"))
386                    return TacticalLines.FCL;
387                if(strLine.equalsIgnoreCase("IL"))
388                    return TacticalLines.IL;
389                if(strLine.equalsIgnoreCase("LOA"))
390                    return TacticalLines.LOA;
391                if(strLine.equalsIgnoreCase("LOD"))
392                    return TacticalLines.LOD;
393                if(strLine.equalsIgnoreCase("LDLC"))
394                    return TacticalLines.LDLC;
395                if(strLine.equalsIgnoreCase("PLD"))
396                    return TacticalLines.PLD;
397                if(strLine.equalsIgnoreCase("ASSAULT"))
398                    return TacticalLines.ASSAULT;
399                if(strLine.equalsIgnoreCase("ATKPOS"))
400                    return TacticalLines.ATKPOS;
401                if(strLine.equalsIgnoreCase("ATKBYFIRE"))
402                    return TacticalLines.ATKBYFIRE;
403                if(strLine.equalsIgnoreCase("SPTBYFIRE"))
404                    return TacticalLines.SPTBYFIRE;
405
406                if(strLine.equalsIgnoreCase("ENCIRCLE"))
407                    return TacticalLines.ENCIRCLE;
408                if(strLine.equalsIgnoreCase("SEIZE"))
409                    return TacticalLines.SEIZE;
410                if(strLine.equalsIgnoreCase("OBJ"))
411                    return TacticalLines.OBJ;
412                if(strLine.equalsIgnoreCase("PEN"))
413                    return TacticalLines.PEN;
414                if(strLine.equalsIgnoreCase("PENETRATE"))
415                    return TacticalLines.PENETRATE;
416                if(strLine.equalsIgnoreCase("AMBUSH"))
417                    return TacticalLines.AMBUSH;
418                if(strLine.equalsIgnoreCase("HOLD"))
419                    return TacticalLines.HOLD;
420                if(strLine.equalsIgnoreCase("RELEASE"))
421                    return TacticalLines.RELEASE;
422                if(strLine.equalsIgnoreCase("BRDGHD"))
423                    return TacticalLines.BRDGHD;
424                if(strLine.equalsIgnoreCase("AO"))
425                    return TacticalLines.AO;
426                if(strLine.equalsIgnoreCase("AIRHEAD"))
427                    return TacticalLines.AIRHEAD;
428                if(strLine.equalsIgnoreCase("NAI"))
429                    return TacticalLines.NAI;
430                if(strLine.equalsIgnoreCase("TAI"))
431                    return TacticalLines.TAI;
432
433                if(strLine.equalsIgnoreCase("BELT"))
434                    return TacticalLines.BELT;
435                if(strLine.equalsIgnoreCase("BELT1"))
436                    return TacticalLines.BELT1;
437                if(strLine.equalsIgnoreCase("LINE"))
438                    return TacticalLines.LINE;
439                if(strLine.equalsIgnoreCase("ZONE"))
440                    return TacticalLines.ZONE;
441                if(strLine.equalsIgnoreCase("OBSFAREA"))
442                    return TacticalLines.OBSFAREA;
443                if(strLine.equalsIgnoreCase("OBSAREA"))
444                    return TacticalLines.OBSAREA;
445                if(strLine.equalsIgnoreCase("ABATIS"))
446                    return TacticalLines.ABATIS;
447
448                if(strLine.equalsIgnoreCase("ATDITCH"))
449                    return TacticalLines.ATDITCH;
450                if(strLine.equalsIgnoreCase("ATDITCHC"))
451                    return TacticalLines.ATDITCHC;
452                if(strLine.equalsIgnoreCase("ATDITCHM"))
453                    return TacticalLines.ATDITCHM;
454                if(strLine.equalsIgnoreCase("ATWALL"))
455                    return TacticalLines.ATWALL;
456                if(strLine.equalsIgnoreCase("CLUSTER"))
457                    return TacticalLines.CLUSTER;
458                if(strLine.equalsIgnoreCase("DEPICT"))
459                    return TacticalLines.DEPICT;
460                if(strLine.equalsIgnoreCase("GAP"))
461                    return TacticalLines.GAP;
462                if(strLine.equalsIgnoreCase("MINED"))
463                    return TacticalLines.MINED;
464                if(strLine.equalsIgnoreCase("MNFLDBLK"))
465                    return TacticalLines.MNFLDBLK;
466                if(strLine.equalsIgnoreCase("MNFLDFIX"))
467                    return TacticalLines.MNFLDFIX;
468                if(strLine.equalsIgnoreCase("TURN"))
469                    return TacticalLines.TURN;
470                if(strLine.equalsIgnoreCase("MNFLDDIS"))
471                    return TacticalLines.MNFLDDIS;
472                if(strLine.equalsIgnoreCase("UXO"))
473                    return TacticalLines.UXO;
474                if(strLine.equalsIgnoreCase("PLANNED"))
475                    return TacticalLines.PLANNED;
476                if(strLine.equalsIgnoreCase("ESR1"))
477                    return TacticalLines.ESR1;
478                if(strLine.equalsIgnoreCase("ESR2"))
479                    return TacticalLines.ESR2;
480                if(strLine.equalsIgnoreCase("ROADBLK"))
481                    return TacticalLines.ROADBLK;
482                if(strLine.equalsIgnoreCase("TRIP"))
483                    return TacticalLines.TRIP;
484                if(strLine.equalsIgnoreCase("UNSP"))
485                    return TacticalLines.UNSP;
486                if(strLine.equalsIgnoreCase("SFENCE"))
487                    return TacticalLines.SFENCE;
488                if(strLine.equalsIgnoreCase("DFENCE"))
489                    return TacticalLines.DFENCE;
490                if(strLine.equalsIgnoreCase("DOUBLEA"))
491                    return TacticalLines.DOUBLEA;
492                if(strLine.equalsIgnoreCase("LWFENCE"))
493                    return TacticalLines.LWFENCE;
494                if(strLine.equalsIgnoreCase("HWFENCE"))
495                    return TacticalLines.HWFENCE;
496                if(strLine.equalsIgnoreCase("SINGLEC"))
497                    return TacticalLines.SINGLEC;
498                if(strLine.equalsIgnoreCase("DOUBLEC"))
499                    return TacticalLines.DOUBLEC;
500                if(strLine.equalsIgnoreCase("TRIPLE"))
501                    return TacticalLines.TRIPLE;
502
503                if(strLine.equalsIgnoreCase("EASY"))
504                    return TacticalLines.EASY;
505                if(strLine.equalsIgnoreCase("BYDIF"))
506                    return TacticalLines.BYDIF;
507                if(strLine.equalsIgnoreCase("BYIMP"))
508                    return TacticalLines.BYIMP;
509
510                if(strLine.equalsIgnoreCase("ASLTXING"))
511                    return TacticalLines.ASLTXING;
512                if(strLine.equalsIgnoreCase("BRIDGE"))
513                    return TacticalLines.BRIDGE;
514                if(strLine.equalsIgnoreCase("FERRY"))
515                    return TacticalLines.FERRY;
516                if(strLine.equalsIgnoreCase("FORD"))
517                    return TacticalLines.FORDSITE;
518                if(strLine.equalsIgnoreCase("FORDSITE"))
519                    return TacticalLines.FORDSITE;
520                if(strLine.equalsIgnoreCase("FORDIF"))
521                    return TacticalLines.FORDIF;
522                if(strLine.equalsIgnoreCase("LANE"))
523                    return TacticalLines.MFLANE;
524                if(strLine.equalsIgnoreCase("MFLANE"))
525                    return TacticalLines.MFLANE;
526                if(strLine.equalsIgnoreCase("RAFT"))
527                    return TacticalLines.RAFT;
528
529                if(strLine.equalsIgnoreCase("FORTL"))
530                    return TacticalLines.FORTL;
531                if(strLine.equalsIgnoreCase("FOXHOLE"))
532                    return TacticalLines.FOXHOLE;
533                if(strLine.equalsIgnoreCase("STRONG"))
534                    return TacticalLines.STRONG;
535                if(strLine.equalsIgnoreCase("MSDZ"))
536                    return TacticalLines.MSDZ;
537                if(strLine.equalsIgnoreCase("RAD"))
538                    return TacticalLines.RAD;
539                if(strLine.equalsIgnoreCase("CHEM"))
540                    return TacticalLines.CHEM;
541                if(strLine.equalsIgnoreCase("BIO"))
542                    return TacticalLines.BIO;
543                if(strLine.equalsIgnoreCase("DRCL"))
544                    return TacticalLines.DRCL;
545
546                if(strLine.equalsIgnoreCase("LINTGT"))
547                    return TacticalLines.LINTGT;
548                if(strLine.equalsIgnoreCase("LINTGTS"))
549                    return TacticalLines.LINTGTS;
550                if(strLine.equalsIgnoreCase("FPF"))
551                    return TacticalLines.FPF;
552                if(strLine.equalsIgnoreCase("FSCL"))
553                    return TacticalLines.FSCL;
554                if(strLine.equalsIgnoreCase("CFL"))
555                    return TacticalLines.CFL;
556                if(strLine.equalsIgnoreCase("NFL"))
557                    return TacticalLines.NFL;
558                if(strLine.equalsIgnoreCase("MFP"))
559                    return TacticalLines.MFP;
560                if(strLine.equalsIgnoreCase("TGMF"))
561                    return TacticalLines.TGMF;
562                if(strLine.equalsIgnoreCase("RFL"))
563                    return TacticalLines.RFL;
564                if(strLine.equalsIgnoreCase("AT"))
565                    return TacticalLines.AT;
566
567                if(strLine.equalsIgnoreCase("RECTANGULAR"))
568                    return TacticalLines.RECTANGULAR;
569                if(strLine.equalsIgnoreCase("CIRCULAR"))
570                    return TacticalLines.CIRCULAR;
571                if(strLine.equalsIgnoreCase("SERIES"))
572                    return TacticalLines.SERIES;
573                if(strLine.equalsIgnoreCase("SMOKE"))
574                    return TacticalLines.SMOKE;
575                if(strLine.equalsIgnoreCase("BOMB"))
576                    return TacticalLines.BOMB;
577
578                if(strLine.equalsIgnoreCase("FSA"))
579                    return TacticalLines.FSA;
580                if(strLine.equalsIgnoreCase("FSA_RECTANGULAR"))
581                    return TacticalLines.FSA_RECTANGULAR;
582                if(strLine.equalsIgnoreCase("FSA_CIRCULAR"))
583                    return TacticalLines.FSA_CIRCULAR;
584
585                if(strLine.equalsIgnoreCase("ACA"))
586                    return TacticalLines.ACA;
587                if(strLine.equalsIgnoreCase("ACA_RECTANGULAR"))
588                    return TacticalLines.ACA_RECTANGULAR;
589                if(strLine.equalsIgnoreCase("ACA_CIRCULAR"))
590                    return TacticalLines.ACA_CIRCULAR;
591
592                if(strLine.equalsIgnoreCase("FFA"))
593                    return TacticalLines.FFA;
594                if(strLine.equalsIgnoreCase("FFA_RECTANGULAR"))
595                    return TacticalLines.FFA_RECTANGULAR;
596                if(strLine.equalsIgnoreCase("FFA_CIRCULAR"))
597                    return TacticalLines.FFA_CIRCULAR;
598
599                if(strLine.equalsIgnoreCase("NFA"))
600                    return TacticalLines.NFA;
601                if(strLine.equalsIgnoreCase("NFA_RECTANGULAR"))
602                    return TacticalLines.NFA_RECTANGULAR;
603                if(strLine.equalsIgnoreCase("NFA_CIRCULAR"))
604                    return TacticalLines.NFA_CIRCULAR;
605
606                if(strLine.equalsIgnoreCase("RFA"))
607                    return TacticalLines.RFA;
608                if(strLine.equalsIgnoreCase("RFA_RECTANGULAR"))
609                    return TacticalLines.RFA_RECTANGULAR;
610                if(strLine.equalsIgnoreCase("RFA_CIRCULAR"))
611                    return TacticalLines.RFA_CIRCULAR;
612
613                if(strLine.equalsIgnoreCase("PAA"))
614                    return TacticalLines.PAA;
615                if(strLine.equalsIgnoreCase("PAA_RECTANGULAR"))
616                    return TacticalLines.PAA_RECTANGULAR_REVC;
617                if(strLine.equalsIgnoreCase("PAA_RECTANGULAR_REVC"))
618                    return TacticalLines.PAA_RECTANGULAR_REVC;
619                if(strLine.equalsIgnoreCase("PAA_CIRCULAR"))
620                    return TacticalLines.PAA_CIRCULAR;
621
622                if(strLine.equalsIgnoreCase("ATI"))
623                    return TacticalLines.ATI;
624                if(strLine.equalsIgnoreCase("ATI_RECTANGULAR"))
625                    return TacticalLines.ATI_RECTANGULAR;
626                if(strLine.equalsIgnoreCase("ATI_CIRCULAR"))
627                    return TacticalLines.ATI_CIRCULAR;
628
629                if(strLine.equalsIgnoreCase("CFFZ"))
630                    return TacticalLines.CFFZ;
631                if(strLine.equalsIgnoreCase("CFFZ_RECTANGULAR"))
632                    return TacticalLines.CFFZ_RECTANGULAR;
633                if(strLine.equalsIgnoreCase("CFFZ_CIRCULAR"))
634                    return TacticalLines.CFFZ_CIRCULAR;
635
636                if(strLine.equalsIgnoreCase("SENSOR"))
637                    return TacticalLines.SENSOR;
638                if(strLine.equalsIgnoreCase("SENSOR_RECTANGULAR"))
639                    return TacticalLines.SENSOR_RECTANGULAR;
640                if(strLine.equalsIgnoreCase("SENSOR_CIRCULAR"))
641                    return TacticalLines.SENSOR_CIRCULAR;
642
643                if(strLine.equalsIgnoreCase("CENSOR"))
644                    return TacticalLines.CENSOR;
645                if(strLine.equalsIgnoreCase("CENSOR_RECTANGULAR"))
646                    return TacticalLines.CENSOR_RECTANGULAR;
647                if(strLine.equalsIgnoreCase("CENSOR_CIRCULAR"))
648                    return TacticalLines.CENSOR_CIRCULAR;
649
650                if(strLine.equalsIgnoreCase("DA"))
651                    return TacticalLines.DA;
652                if(strLine.equalsIgnoreCase("DA_RECTANGULAR"))
653                    return TacticalLines.DA_RECTANGULAR;
654                if(strLine.equalsIgnoreCase("DA_CIRCULAR"))
655                    return TacticalLines.DA_CIRCULAR;
656
657
658                if(strLine.equalsIgnoreCase("CFZ"))
659                    return TacticalLines.CFZ;
660                if(strLine.equalsIgnoreCase("CFZ_RECTANGULAR"))
661                    return TacticalLines.CFZ_RECTANGULAR;
662                if(strLine.equalsIgnoreCase("CFZ_CIRCULAR"))
663                    return TacticalLines.CFZ_CIRCULAR;
664
665                if(strLine.equalsIgnoreCase("ZOR"))
666                    return TacticalLines.ZOR;
667                if(strLine.equalsIgnoreCase("ZOR_RECTANGULAR"))
668                    return TacticalLines.ZOR_RECTANGULAR;
669                if(strLine.equalsIgnoreCase("ZOR_CIRCULAR"))
670                    return TacticalLines.ZOR_CIRCULAR;
671
672                if(strLine.equalsIgnoreCase("TBA"))
673                    return TacticalLines.TBA;
674                if(strLine.equalsIgnoreCase("TBA_RECTANGULAR"))
675                    return TacticalLines.TBA_RECTANGULAR;
676                if(strLine.equalsIgnoreCase("TBA_CIRCULAR"))
677                    return TacticalLines.TBA_CIRCULAR;
678
679                if(strLine.equalsIgnoreCase("TVAR"))
680                    return TacticalLines.TVAR;
681                if(strLine.equalsIgnoreCase("TVAR_RECTANGULAR"))
682                    return TacticalLines.TVAR_RECTANGULAR;
683                if(strLine.equalsIgnoreCase("TVAR_CIRCULAR"))
684                    return TacticalLines.TVAR_CIRCULAR;
685                
686                if(strLine.equalsIgnoreCase("KILLBOXBLUE"))
687                    return TacticalLines.KILLBOXBLUE;
688                if(strLine.equalsIgnoreCase("KILLBOXBLUE_RECTANGULAR"))
689                    return TacticalLines.KILLBOXBLUE_RECTANGULAR;
690                if(strLine.equalsIgnoreCase("KILLBOXBLUE_CIRCULAR"))
691                    return TacticalLines.KILLBOXBLUE_CIRCULAR;
692
693                if(strLine.equalsIgnoreCase("KILLBOXPURPLE"))
694                    return TacticalLines.KILLBOXPURPLE;
695                if(strLine.equalsIgnoreCase("KILLBOXPURPLE_RECTANGULAR"))
696                    return TacticalLines.KILLBOXPURPLE_RECTANGULAR;
697                if(strLine.equalsIgnoreCase("KILLBOXPURPLE_CIRCULAR"))
698                    return TacticalLines.KILLBOXPURPLE_CIRCULAR;
699
700                if(strLine.equalsIgnoreCase("RANGE_FAN"))
701                    return TacticalLines.RANGE_FAN;
702                if(strLine.equalsIgnoreCase("RANGEFAN"))
703                    return TacticalLines.RANGE_FAN;
704                if(strLine.equalsIgnoreCase("RANGE_FANS"))
705                    return TacticalLines.RANGE_FAN;
706                if(strLine.equalsIgnoreCase("RANGEFANS"))
707                    return TacticalLines.RANGE_FAN;
708
709                if(strLine.equalsIgnoreCase("SECTOR"))
710                    return TacticalLines.RANGE_FAN_SECTOR;
711
712                if(strLine.equalsIgnoreCase("CONVOY"))
713                    return TacticalLines.CONVOY;
714                if(strLine.equalsIgnoreCase("HCONVOY"))
715                    return TacticalLines.HCONVOY;
716
717                if(strLine.equalsIgnoreCase("MSR"))
718                    return TacticalLines.MSR;
719                if(strLine.equalsIgnoreCase("ASR"))
720                    return TacticalLines.ASR;
721                if(strLine.equalsIgnoreCase("ONEWAY"))
722                    return TacticalLines.ONEWAY;
723                if(strLine.equalsIgnoreCase("TWOWAY"))
724                    return TacticalLines.TWOWAY;
725                if(strLine.equalsIgnoreCase("ALT"))
726                    return TacticalLines.ALT;
727
728                if(strLine.equalsIgnoreCase("DHA"))
729                    return TacticalLines.DHA;
730                if(strLine.equalsIgnoreCase("EPW"))
731                    return TacticalLines.EPW;
732                if(strLine.equalsIgnoreCase("FARP"))
733                    return TacticalLines.FARP;
734                if(strLine.equalsIgnoreCase("RHA"))
735                    return TacticalLines.RHA;
736                if(strLine.equalsIgnoreCase("BSA"))
737                    return TacticalLines.BSA;
738                if(strLine.equalsIgnoreCase("DSA"))
739                    return TacticalLines.DSA;
740                if(strLine.equalsIgnoreCase("RSA"))
741                    return TacticalLines.RSA;
742
743                if(strLine.equalsIgnoreCase("BEARING"))
744                    return TacticalLines.BEARING;
745                if(strLine.equalsIgnoreCase("ELECTRO"))
746                    return TacticalLines.ELECTRO;
747                if(strLine.equalsIgnoreCase("ACOUSTIC"))
748                    return TacticalLines.ACOUSTIC;
749                if(strLine.equalsIgnoreCase("TORPEDO"))
750                    return TacticalLines.TORPEDO;
751                if(strLine.equalsIgnoreCase("OPTICAL"))
752                    return TacticalLines.OPTICAL;
753
754            }
755            //These are length >= 15, are for the SEC tester only
756            if(strLine.equalsIgnoreCase("FSA_RECTANGULAR"))
757                return TacticalLines.FSA_RECTANGULAR;
758
759            if(strLine.equalsIgnoreCase("ACA_RECTANGULAR"))
760                return TacticalLines.ACA_RECTANGULAR;
761
762            if(strLine.equalsIgnoreCase("FFA_RECTANGULAR"))
763                return TacticalLines.FFA_RECTANGULAR;
764
765            if(strLine.equalsIgnoreCase("NFA_RECTANGULAR"))
766                return TacticalLines.NFA_RECTANGULAR;
767
768            if(strLine.equalsIgnoreCase("RFA_RECTANGULAR"))
769                return TacticalLines.RFA_RECTANGULAR;
770
771            //if(strLine.equalsIgnoreCase("PAA_RECTANGULAR"))
772                //return TacticalLines.PAA_RECTANGULAR;
773
774            if(strLine.equalsIgnoreCase("ATI_RECTANGULAR"))
775                return TacticalLines.ATI_RECTANGULAR;
776
777            if(strLine.equalsIgnoreCase("CFFZ_RECTANGULAR"))
778                return TacticalLines.CFFZ_RECTANGULAR;
779
780            if(strLine.equalsIgnoreCase("SENSOR_RECTANGULAR"))
781                return TacticalLines.SENSOR_RECTANGULAR;
782
783            if(strLine.equalsIgnoreCase("SENSOR_CIRCULAR"))
784                return TacticalLines.SENSOR_CIRCULAR;
785
786            if(strLine.equalsIgnoreCase("CENSOR_RECTANGULAR"))
787                return TacticalLines.CENSOR_RECTANGULAR;
788
789            if(strLine.equalsIgnoreCase("CENSOR_CIRCULAR"))
790                return TacticalLines.CENSOR_CIRCULAR;
791
792            if(strLine.equalsIgnoreCase("DA_RECTANGULAR"))
793                return TacticalLines.DA_RECTANGULAR;
794
795            if(strLine.equalsIgnoreCase("CFZ_RECTANGULAR"))
796                return TacticalLines.CFZ_RECTANGULAR;
797
798            if(strLine.equalsIgnoreCase("ZOR_RECTANGULAR"))
799                return TacticalLines.ZOR_RECTANGULAR;
800
801            if(strLine.equalsIgnoreCase("TBA_RECTANGULAR"))
802                return TacticalLines.TBA_RECTANGULAR;
803
804            if(strLine.equalsIgnoreCase("TVAR_RECTANGULAR"))
805                return TacticalLines.TVAR_RECTANGULAR;
806
807            if(strLine.equalsIgnoreCase("GENERIC---****X"))
808                return TacticalLines.GENERIC;
809            //end section
810            
811            String str1,str2,str3,str4,str5,str6,str7,str10;
812            String c0=strLine.substring(0,1);
813            String c1=strLine.substring(1,2);
814            String c2=strLine.substring(2,3);
815            //int bolUseEllipticArc=0;
816
817            str1=strLine.substring(4,5);//was(4,1)
818            str2=strLine.substring(4,6);//was(4,2)
819            str3=strLine.substring(4,7);//was(4,3)
820            str4=strLine.substring(4,8);//was(4,4)
821            str5=strLine.substring(4,9);//was(4,5)
822            str6=strLine.substring(3,9);//was(3,6)
823            str7=strLine.substring(3,10);//was(3,7)
824            str10=strLine.substring(3,13);//was(3,10)
825
826            //Basic Shapes
827            if(strLine.equalsIgnoreCase("BS_LINE--------"))
828                return TacticalLines.BS_LINE;
829            if(strLine.equalsIgnoreCase("BS_AREA--------"))
830                return TacticalLines.BS_AREA;
831            if(strLine.equalsIgnoreCase("BS_CROSS-------"))
832                return TacticalLines.BS_CROSS;
833            if(strLine.equalsIgnoreCase("BS_ELLIPSE-----"))
834                return TacticalLines.BS_ELLIPSE;
835            if(strLine.equalsIgnoreCase("PBS_ELLIPSE----"))
836                return TacticalLines.PBS_ELLIPSE;
837            if(strLine.equalsIgnoreCase("PBS_CIRCLE-----"))
838                return TacticalLines.PBS_CIRCLE;
839            if(strLine.equalsIgnoreCase("BS_RECTANGLE---"))
840                return TacticalLines.BS_RECTANGLE;
841            if(strLine.equalsIgnoreCase("PBS_RECTANGLE--"))
842                return TacticalLines.PBS_RECTANGLE;
843            if(strLine.equalsIgnoreCase("PBS_SQUARE-----"))
844                return TacticalLines.PBS_SQUARE;
845            //buffered shapes
846            if(strLine.equalsIgnoreCase("BBS_LINE-------"))
847                return TacticalLines.BBS_LINE;
848            if(strLine.equalsIgnoreCase("BBS_AREA-------"))
849                return TacticalLines.BBS_AREA;
850            if(strLine.equalsIgnoreCase("BBS_POINT------"))
851                return TacticalLines.BBS_POINT;
852            if(strLine.equalsIgnoreCase("BBS_RECTANGLE--"))
853                return TacticalLines.BBS_RECTANGLE;
854            if(strLine.equalsIgnoreCase("BS_BBOX--------"))
855                return TacticalLines.BS_BBOX;
856            
857            //METOCs
858            if (c0.equals("W") && c1.equals("A"))
859            {
860                if (str7.equals("DPXSQ--")) {
861                    return TacticalLines.SQUALL;
862                }
863                if (str7.equals("DPFC---")) {
864                    return TacticalLines.CF;
865                }
866                if (str7.equals("DPFC-FG")) {
867                    return TacticalLines.CFG;
868                }
869                if (str7.equals("DPFC-FY")) {
870                    return TacticalLines.CFY;
871                }
872                if (str7.equals("DPFW-FG")) {
873                    return TacticalLines.WFG;
874                }
875                if (str7.equals("DPFW-FY")) {
876                    return TacticalLines.WFY;
877                }
878                if (str7.equals("DPFOU--")) {
879                    return TacticalLines.UOF;
880                }
881                if (str7.equals("DPFO-FY")) {
882                    return TacticalLines.OFY;
883                }
884                if (str7.equals("DPFSU--")) {
885                    return TacticalLines.USF;
886                }
887                if (str7.equals("DPFS-FG")) {
888                    return TacticalLines.SFG;
889                }
890                if (str7.equals("DPFS-FY")) {
891                    return TacticalLines.SFY;
892                }
893                if (str7.equals("DPXIL--")) {
894                    return TacticalLines.INSTABILITY;
895                }
896                if (str7.equals("DPXSH--")) {
897                    return TacticalLines.SHEAR;
898                }
899                if (str7.equals("DPXITCZ")) {
900                    return TacticalLines.ITC;
901                }
902                if (str7.equals("DPXCV--")) {
903                    return TacticalLines.CONVERGANCE;
904                }
905                if (str7.equals("DPXITD-")) {
906                    return TacticalLines.ITD;
907                }
908                if (str7.equals("DWJ----")) {
909                    return TacticalLines.JET;
910                }
911                if (str7.equals("DWS----")) {
912                    return TacticalLines.STREAM;
913                }
914                if (str7.equals("DBAIF--")) {
915                    return TacticalLines.IFR;
916                }
917                if (str7.equals("DBAMV--")) {
918                    return TacticalLines.MVFR;
919                }
920                if (str7.equals("DBATB--")) {
921                    return TacticalLines.TURBULENCE;
922                }
923                if (str7.equals("DBAI---")) {
924                    return TacticalLines.ICING;
925                }
926                if (str7.equals("DBALPNC")) {
927                    return TacticalLines.NON_CONVECTIVE;
928                }
929                if (str7.equals("DBALPC-")) {
930                    return TacticalLines.CONVECTIVE;
931                }
932                if (str7.equals("DBAFP--")) {
933                    return TacticalLines.FROZEN;
934                }
935                if (str7.equals("DBAT---")) {
936                    return TacticalLines.THUNDERSTORMS;
937                }
938                if (str7.equals("DBAFG--")) {
939                    return TacticalLines.FOG;
940                }
941                if (str7.equals("DBAD---")) {
942                    return TacticalLines.SAND;
943                }
944                if (str7.equals("DBAFF--")) {
945                    return TacticalLines.FREEFORM;
946                }
947                if (str7.equals("DIPIB--")) {
948                    return TacticalLines.ISOBAR;
949                }
950                if (str7.equals("DIPCO--")) {
951                    return TacticalLines.UPPER_AIR;
952                }
953                if (str7.equals("DIPIS--")) {
954                    return TacticalLines.ISOTHERM;
955                }
956                if (str7.equals("DIPIT--")) {
957                    return TacticalLines.ISOTACH;
958                }
959                if (str7.equals("DIPID--")) {
960                    return TacticalLines.ISODROSOTHERM;
961                }
962                if (str7.equals("DIPTH--")) {
963                    return TacticalLines.ISOPLETHS;
964                }
965                if (str7.equals("DIPFF--")) {
966                    return TacticalLines.OPERATOR_FREEFORM;
967                }
968
969
970                //if (strncmp(str,"PXR",3).equals(0)
971                if (str3.equals("PXR")) {
972                    return TacticalLines.RIDGE;
973                }
974                //if (strncmp(str,"PXS",3).equals(0)
975                //if(str3.equals("PXS")
976                //      return TacticalLines.SQUALL;
977                //if (strncmp(str,"PXT",3).equals(0)
978                if (str3.equals("PXT")) {
979                    return TacticalLines.TROUGH;
980                }
981                //if (strncmp(str,"PFCU",4).equals(0)
982                if (str4.equals("PFCU")) {
983                    return TacticalLines.UCF;
984                }
985                //if (strncmp(str,"PFO",3).equals(0)
986                if (str3.equals("PFO")) {
987                    return TacticalLines.OCCLUDED;
988                }
989                //if (strncmp(str,"PFS",3).equals(0)
990                if (str3.equals("PFS")) {
991                    return TacticalLines.SF;
992                }
993                //if (strncmp(str,"PFWU",4).equals(0)
994                if (str4.equals("PFWU")) {
995                    return TacticalLines.UWF;
996                }
997                //if (strncmp(str,"PFW",3).equals(0)
998                if (str3.equals("PFW")) {
999                    return TacticalLines.WF;
1000                }
1001                //if (strncmp(str,"PFC",3).equals(0)
1002                if (str3.equals("PFC")) {
1003                    return TacticalLines.CF;
1004                }
1005            }
1006            if (c0.equals("W") && c1.equals("O"))
1007            {
1008                if (str10.equals("DHCF----L-")) {
1009                    return TacticalLines.FORESHORE_LINE;
1010                }
1011                if (str10.equals("DHCF-----A")) {
1012                    return TacticalLines.FORESHORE_AREA;
1013                }
1014                if (str10.equals("DHPBA---L-")) {
1015                    return TacticalLines.ANCHORAGE_LINE;
1016                }
1017                if (str10.equals("DHPBA----A")) {
1018                    return TacticalLines.ANCHORAGE_AREA;
1019                }
1020                if (str10.equals("DHPMO---L-")) {
1021                    return TacticalLines.LOADING_FACILITY_LINE;
1022                }
1023                if (str10.equals("DHPMO----A")) {
1024                    return TacticalLines.LOADING_FACILITY_AREA;
1025                }
1026            }
1027            if (c0.equals("W") && c1.equals("O"))
1028            {
1029                if (str7.equals("DIDID--")) {
1030                    return TacticalLines.ICE_DRIFT;
1031                }
1032                if (str7.equals("DILOV--")) {
1033                    return TacticalLines.LVO;
1034                }
1035                if (str7.equals("DILUC--")) {
1036                    return TacticalLines.UNDERCAST;
1037                }
1038                if (str7.equals("DILOR--")) {
1039                    return TacticalLines.LRO;
1040                }
1041                if (str7.equals("DILIEO-")) {
1042                    return TacticalLines.ICE_EDGE;
1043                }
1044                if (str7.equals("DILIEE-")) {
1045                    return TacticalLines.ESTIMATED_ICE_EDGE;
1046                }
1047                if (str7.equals("DILIER-")) {
1048                    return TacticalLines.ICE_EDGE_RADAR;
1049                }
1050                if (str7.equals("DIOC---")) {
1051                    return TacticalLines.CRACKS;
1052                }
1053                if (str7.equals("DIOCS--")) {
1054                    return TacticalLines.CRACKS_SPECIFIC_LOCATION;
1055                }
1056                if (str7.equals("DIOL---")) {
1057                    return TacticalLines.ICE_OPENINGS_LEAD;
1058                }
1059                if (str7.equals("DIOLF--")) {
1060                    return TacticalLines.ICE_OPENINGS_FROZEN;
1061                }
1062                if (str7.equals("DHDDL--")) {
1063                    return TacticalLines.DEPTH_CURVE;
1064                }
1065                if (str7.equals("DHDDC--")) {
1066                    return TacticalLines.DEPTH_CONTOUR;
1067                }
1068                if (str7.equals("DHDDA--")) {
1069                    return TacticalLines.DEPTH_AREA;
1070                }
1071                if (str7.equals("DHCC---")) {
1072                    return TacticalLines.COASTLINE;
1073                }
1074                if (str7.equals("DHCI---")) {
1075                    return TacticalLines.ISLAND;
1076                }
1077                if (str7.equals("DHCB---")) {
1078                    return TacticalLines.BEACH;
1079                }
1080                if (str7.equals("DHCW---")) {
1081                    return TacticalLines.WATER;
1082                }
1083                if (str7.equals("DHPBP--")) {
1084                    return TacticalLines.PIER;
1085                }
1086                if (str7.equals("-HPFF--")) {
1087                    return TacticalLines.WEIRS;
1088                }
1089                if (str7.equals("-HHDR--")) {
1090                    return TacticalLines.REEF;
1091                }
1092                if (str7.equals("DHPMD--")) {
1093                    return TacticalLines.DRYDOCK;
1094                }
1095                if (str7.equals("DHPMRA-")) {
1096                    return TacticalLines.RAMP_ABOVE_WATER;
1097                }
1098                if (str7.equals("DHPMRB-")) {
1099                    return TacticalLines.RAMP_BELOW_WATER;
1100                }
1101                if (str7.equals("DHPSPA-")) {
1102                    return TacticalLines.JETTY_ABOVE_WATER;
1103                }
1104                if (str7.equals("DHPSPB-")) {
1105                    return TacticalLines.JETTY_BELOW_WATER;
1106                }
1107                if (str7.equals("DHPSPS-")) {
1108                    return TacticalLines.SEAWALL;
1109                }
1110                if (str7.equals("DHABP--")) {
1111                    return TacticalLines.PERCHES;
1112                }
1113                if (str7.equals("DHALLA-")) {
1114                    return TacticalLines.LEADING_LINE;
1115                }
1116                if (str7.equals("DHHD---")) {
1117                    return TacticalLines.UNDERWATER_HAZARD;
1118                }
1119                if (str7.equals("DHHDF--")) {
1120                    return TacticalLines.FOUL_GROUND;
1121                }
1122                if (str7.equals("DHHDK--")) {
1123                    return TacticalLines.KELP;
1124                }
1125                if (str7.equals("DHHDB--")) {
1126                    return TacticalLines.BREAKERS;
1127                }
1128                if (str7.equals("DHHDD--")) {
1129                    return TacticalLines.DISCOLORED_WATER;
1130                }
1131                if (str7.equals("DTCCCFE")) {
1132                    return TacticalLines.EBB_TIDE;
1133                }
1134                if (str7.equals("DTCCCFF")) {
1135                    return TacticalLines.FLOOD_TIDE;
1136                }
1137                if (str7.equals("DL-RA--")) {
1138                    return TacticalLines.RESTRICTED_AREA;
1139                }
1140                if (str7.equals("DMPA---")) {
1141                    return TacticalLines.PIPE;
1142                }
1143                if (str7.equals("DL-TA--")) {
1144                    return TacticalLines.TRAINING_AREA;
1145                }
1146                if (str7.equals("DOBVA--")) {
1147                    return TacticalLines.VDR_LEVEL_12;
1148                }
1149                if (str7.equals("DOBVB--")) {
1150                    return TacticalLines.VDR_LEVEL_23;
1151                }
1152                if (str7.equals("DOBVC--")) {
1153                    return TacticalLines.VDR_LEVEL_34;
1154                }
1155                if (str7.equals("DOBVD--")) {
1156                    return TacticalLines.VDR_LEVEL_45;
1157                }
1158                if (str7.equals("DOBVE--")) {
1159                    return TacticalLines.VDR_LEVEL_56;
1160                }
1161                if (str7.equals("DOBVF--")) {
1162                    return TacticalLines.VDR_LEVEL_67;
1163                }
1164                if (str7.equals("DOBVG--")) {
1165                    return TacticalLines.VDR_LEVEL_78;
1166                }
1167                if (str7.equals("DOBVH--")) {
1168                    return TacticalLines.VDR_LEVEL_89;
1169                }
1170                if (str7.equals("DOBVI--")) {
1171                    return TacticalLines.VDR_LEVEL_910;
1172                }
1173                if (str7.equals("DBSF---")) {
1174                    return TacticalLines.BEACH_SLOPE_FLAT;
1175                }
1176                if (str7.equals("DBSG---")) {
1177                    return TacticalLines.BEACH_SLOPE_GENTLE;
1178                }
1179                if (str7.equals("DBSM---")) {
1180                    return TacticalLines.BEACH_SLOPE_MODERATE;
1181                }
1182                if (str7.equals("DBST---")) {
1183                    return TacticalLines.BEACH_SLOPE_STEEP;
1184                }
1185                if (str7.equals("DGMSR--")) {
1186                    return TacticalLines.SOLID_ROCK;
1187                }
1188                if (str7.equals("DGMSC--")) {
1189                    return TacticalLines.CLAY;
1190                }
1191                if (str7.equals("DGMSSVS")) {
1192                    return TacticalLines.VERY_COARSE_SAND;
1193                }
1194                if (str7.equals("DGMSSC-")) {
1195                    return TacticalLines.COARSE_SAND;
1196                }
1197                if (str7.equals("DGMSSM-")) {
1198                    return TacticalLines.MEDIUM_SAND;
1199                }
1200                if (str7.equals("DGMSSF-")) {
1201                    return TacticalLines.FINE_SAND;
1202                }
1203                if (str7.equals("DGMSSVF")) {
1204                    return TacticalLines.VERY_FINE_SAND;
1205                }
1206                if (str7.equals("DGMSIVF")) {
1207                    return TacticalLines.VERY_FINE_SILT;
1208                }
1209                if (str7.equals("DGMSIF-")) {
1210                    return TacticalLines.FINE_SILT;
1211                }
1212                if (str7.equals("DGMSIM-")) {
1213                    return TacticalLines.MEDIUM_SILT;
1214                }
1215                if (str7.equals("DGMSIC-")) {
1216                    return TacticalLines.COARSE_SILT;
1217                }
1218                if (str7.equals("DGMSB--")) {
1219                    return TacticalLines.BOULDERS;
1220                }
1221                if (str7.equals("DGMS-CO")) {
1222                    return TacticalLines.OYSTER_SHELLS;
1223                }
1224                if (str7.equals("DGMS-PH")) {
1225                    return TacticalLines.PEBBLES;
1226                }
1227                if (str7.equals("DGMS-SH")) {
1228                    return TacticalLines.SAND_AND_SHELLS;
1229                }
1230                if (str7.equals("DGML---")) {
1231                    return TacticalLines.BOTTOM_SEDIMENTS_LAND;
1232                }
1233                if (str7.equals("DGMN---")) {
1234                    return TacticalLines.BOTTOM_SEDIMENTS_NO_DATA;
1235                }
1236                if (str7.equals("DGMRS--")) {
1237                    return TacticalLines.BOTTOM_ROUGHNESS_SMOOTH;
1238                }
1239                if (str7.equals("DGMRM--")) {
1240                    return TacticalLines.BOTTOM_ROUGHNESS_MODERATE;
1241                }
1242                if (str7.equals("DGMRR--")) {
1243                    return TacticalLines.BOTTOM_ROUGHNESS_ROUGH;
1244                }
1245                if (str7.equals("DGMCL--")) {
1246                    return TacticalLines.CLUTTER_LOW;
1247                }
1248                if (str7.equals("DGMCM--")) {
1249                    return TacticalLines.CLUTTER_MEDIUM;
1250                }
1251                if (str7.equals("DGMCH--")) {
1252                    return TacticalLines.CLUTTER_HIGH;
1253                }
1254                if (str7.equals("DGMIBA-")) {
1255                    return TacticalLines.IMPACT_BURIAL_0;
1256                }
1257                if (str7.equals("DGMIBB-")) {
1258                    return TacticalLines.IMPACT_BURIAL_10;
1259                }
1260                if (str7.equals("DGMIBC-")) {
1261                    return TacticalLines.IMPACT_BURIAL_20;
1262                }
1263                if (str7.equals("DGMIBD-")) {
1264                    return TacticalLines.IMPACT_BURIAL_75;
1265                }
1266                if (str7.equals("DGMIBE-")) {
1267                    return TacticalLines.IMPACT_BURIAL_100;
1268                }
1269                if (str7.equals("DGMBCA-")) {
1270                    return TacticalLines.BOTTOM_CATEGORY_A;
1271                }
1272                if (str7.equals("DGMBCB-")) {
1273                    return TacticalLines.BOTTOM_CATEGORY_B;
1274                }
1275                if (str7.equals("DGMBCC-")) {
1276                    return TacticalLines.BOTTOM_CATEGORY_C;
1277                }
1278                if (str7.equals("DGMBTA-")) {
1279                    return TacticalLines.BOTTOM_TYPE_A1;
1280                }
1281                if (str7.equals("DGMBTB-")) {
1282                    return TacticalLines.BOTTOM_TYPE_A2;
1283                }
1284                if (str7.equals("DGMBTC-")) {
1285                    return TacticalLines.BOTTOM_TYPE_A3;
1286                }
1287                if (str7.equals("DGMBTD-")) {
1288                    return TacticalLines.BOTTOM_TYPE_B1;
1289                }
1290                if (str7.equals("DGMBTE-")) {
1291                    return TacticalLines.BOTTOM_TYPE_B2;
1292                }
1293                if (str7.equals("DGMBTF-")) {
1294                    return TacticalLines.BOTTOM_TYPE_B3;
1295                }
1296                if (str7.equals("DGMBTG-")) {
1297                    return TacticalLines.BOTTOM_TYPE_C1;
1298                }
1299                if (str7.equals("DGMBTH-")) {
1300                    return TacticalLines.BOTTOM_TYPE_C2;
1301                }
1302                if (str7.equals("DGMBTI-")) {
1303                    return TacticalLines.BOTTOM_TYPE_C3;
1304                }
1305                if (str7.equals("DL-SA--")) {
1306                    return TacticalLines.SWEPT_AREA;
1307                }
1308                if (str7.equals("DMOA---")) {
1309                    return TacticalLines.OIL_RIG_FIELD;
1310                }
1311                if (str7.equals("DMCC---")) {
1312                    return TacticalLines.SUBMERGED_CRIB;
1313                }
1314                if (str7.equals("DMCA---")) {
1315                    return TacticalLines.CABLE;
1316                }
1317                if (str7.equals("DL-ML--")) {
1318                    return TacticalLines.MARITIME_LIMIT;
1319                }
1320                if (str7.equals("DL-MA--")) {
1321                    return TacticalLines.MARITIME_AREA;
1322                }
1323                if (str7.equals("DMCD---")) {
1324                    return TacticalLines.CANAL;
1325                }
1326                if (str7.equals("DL-O---")) {
1327                    return TacticalLines.OPERATOR_DEFINED;
1328                }
1329            }
1330            //end METOC section
1331
1332            //SPT
1333            if(str5.equals("OLAGS") && c0.equals("G") && c2.equals("G")){
1334                return TacticalLines.SPT;
1335            }
1336            //MAIN
1337            if(str5.equals("OLAGM") && c0.equals("G") && c2.equals("G")){
1338                return TacticalLines.MAIN;
1339            }
1340            //DIRATKGND
1341            if (str5.equals("OLKGM") && c0.equals("G") && c2.equals("G")){
1342                return TacticalLines.DIRATKGND;
1343            }
1344            //DIRATKSPT
1345            if (str5.equals("OLKGS") && c0.equals("G") && c2.equals("G")){
1346                return TacticalLines.DIRATKSPT;
1347            }
1348            //AIRAOA
1349            if (str4.equals("OLAA") && c0.equals("G") && c2.equals("G")) {
1350                return TacticalLines.AIRAOA;
1351            }
1352            //AAAAA
1353            if (str4.equals("OLAR") && c0.equals("G") && c2.equals("G")) {
1354                return TacticalLines.AAAAA;
1355            }
1356            //DIRATKAIR
1357            if (str4.equals("OLKA") && c0.equals("G") && c2.equals("G")) {
1358                return  TacticalLines.DIRATKAIR;
1359            }
1360            //AXAD
1361            if (str4.equals("OLAV") && c0.equals("G") && c2.equals("G")) {
1362                return TacticalLines.AXAD;
1363            }
1364            //ATDITCH
1365            if (str4.equals("OADU") && c0.equals("G") && c2.equals("M")) {
1366                return TacticalLines.ATDITCH;
1367            }
1368            //ATDITCHC
1369            if (str4.equals("OADC") && c0.equals("G") && c2.equals("M")) {
1370                return  TacticalLines.ATDITCHC;
1371            }
1372            //LOMEZ
1373            if (str4.equals("AAML") && c0.equals("G") && c2.equals("G")) {
1374                return TacticalLines.LOMEZ;
1375            }
1376            //HIMEZ
1377            if (str4.equals("AAMH") && c0.equals("G") && c2.equals("G")) {
1378                return TacticalLines.HIMEZ;
1379            }
1380            //PNO
1381            if (str4.equals("DABP") && c0.equals("G") && c2.equals("G")) {
1382                return TacticalLines.PNO;
1383            }
1384            //TRIPLE
1385            if (str4.equals("OWCT") && c0.equals("G") && c2.equals("M")){
1386                    return TacticalLines.TRIPLE;
1387            }
1388            //DOUBLEC
1389            if (str4.equals("OWCD") && c0.equals("G") && c2.equals("M")) {
1390                return TacticalLines.DOUBLEC;
1391            }
1392            //SINGLEC
1393            if (str4.equals("OWCS") && c0.equals("G") && c2.equals("M")) {
1394                    return TacticalLines.SINGLEC;
1395            }
1396            //PAA
1397            if (str4.equals("ACPR") && c0.equals("G") && c2.equals("F")) //change 1
1398            {   //toggle two lines for Mil-Std-2525 Rev B, Rev C
1399                //return TacticalLines.PAA_RECTANGULAR;
1400                return TacticalLines.PAA_RECTANGULAR_REVC;
1401            }
1402            //FSA
1403            if (str4.equals("ACSI") && c0.equals("G") && c2.equals("F")) //change 1
1404            {
1405                return TacticalLines.FSA;
1406            }
1407            //FSA_RECTANGULAR
1408            if (str4.equals("ACSR") && c0.equals("G") && c2.equals("F")) //change 1
1409            {
1410                return TacticalLines.FSA_RECTANGULAR;
1411            }
1412            //FSA_CIRCULAR
1413            if (str4.equals("ACSC") && c0.equals("G") && c2.equals("F")) //change 1
1414            {
1415                return TacticalLines.FSA_CIRCULAR;
1416            }
1417            //ACA
1418            if (str4.equals("ACAI") && c0.equals("G") && c2.equals("F")) //change 1
1419            {
1420                return TacticalLines.ACA;
1421            }
1422            //ACA_RECTANGULAR
1423            if (str4.equals("ACAR") && c0.equals("G") && c2.equals("F")) //change 1
1424            {
1425                return TacticalLines.ACA_RECTANGULAR;
1426            }
1427            //ACA_CIRCULAR
1428            if (str4.equals("ACAC") && c0.equals("G") && c2.equals("F")) //change 1
1429            {
1430                return TacticalLines.ACA_CIRCULAR;
1431            }
1432            //FFA
1433            if (str4.equals("ACFI") && c0.equals("G") && c2.equals( "F")) //change 1
1434            {
1435                return TacticalLines.FFA;
1436            }
1437            //FFA_RECTANGULAR
1438            if (str4.equals("ACFR") && c0.equals("G") && c2.equals("F")) //change 1
1439            {
1440                return TacticalLines.FFA_RECTANGULAR;
1441            }
1442            //FFA_CIRCULAR
1443            if (str4.equals("ACFC") && c0.equals("G") && c2.equals("F")) //change 1
1444            {
1445                return TacticalLines.FFA_CIRCULAR;
1446            }
1447            //NFA
1448            if (str4.equals("ACNI") && c0.equals("G") && c2.equals("F")) //change 1
1449            {
1450                return TacticalLines.NFA;
1451            }
1452            //NFA_RECTANGULAR
1453            if (str4.equals("ACNR") && c0.equals("G") && c2.equals("F")) //change 1
1454            {
1455                return TacticalLines.NFA_RECTANGULAR;
1456            }
1457            //NFA_CIRCULAR
1458            if (str4.equals("ACNC") && c0.equals("G") && c2.equals("F")) //change 1
1459            {
1460                return TacticalLines.NFA_CIRCULAR;
1461            }
1462            //RFA
1463            if (str4.equals("ACRI") && c0.equals("G") && c2.equals("F")) //change 1
1464            {
1465                return TacticalLines.RFA;
1466            }
1467            //RFA_RECTANGULAR
1468            if (str4.equals("ACRR") && c0.equals("G") && c2.equals("F")) //change 1
1469            {
1470                return TacticalLines.RFA_RECTANGULAR;
1471            }
1472            //RFA_CIRCULAR
1473            if (str4.equals("ACRC") && c0.equals("G") && c2.equals("F")) //change 1
1474            {
1475                return TacticalLines.RFA_CIRCULAR;
1476            }
1477            //RFA_CIRCULAR
1478            if (str4.equals("ACPC") && c0.equals("G") && c2.equals("F")) //change 1
1479            {
1480                return TacticalLines.PAA_CIRCULAR;
1481            }
1482            //ATI
1483            if (str4.equals("AZII") && c0.equals("G") && c2.equals("F")) //change 1
1484            {
1485                return TacticalLines.ATI;
1486            }
1487            //ATI_RECTANGULAR
1488            if (str4.equals("AZIR") && c0.equals("G") && c2.equals("F")) //change 1
1489            {
1490                return TacticalLines.ATI_RECTANGULAR;
1491            }
1492            //ATI_CIRCULAR
1493            if (str4.equals("AZIC") && c0.equals("G") && c2.equals("F")) //change 1
1494            {
1495                return TacticalLines.ATI_CIRCULAR;
1496            }
1497            //CFFZ
1498            if (str4.equals("AZXI") && c0.equals("G") && c2.equals("F")) //change 1
1499            {
1500                return TacticalLines.CFFZ;
1501            }
1502            //CFFZ_RECTANGULAR
1503            if (str4.equals("AZXR") && c0.equals("G") && c2.equals("F")) //change 1
1504            {
1505                return TacticalLines.CFFZ_RECTANGULAR;
1506            }
1507            //CFFZ_CIRCULAR
1508            if (str4.equals("AZXC") && c0.equals("G") && c2.equals("F")) //change 1
1509            {
1510                return TacticalLines.CFFZ_CIRCULAR;
1511            }
1512            //SENSOR
1513            if (str4.equals("AZSI") && c0.equals("G") && c2.equals("F")) //change 1
1514            {
1515                return TacticalLines.SENSOR;
1516            }
1517            if (str4.equals("ACEI") && c0.equals("G") && c2.equals("F")) //change 1
1518            {
1519                return TacticalLines.SENSOR;
1520            }
1521            //SENSOR_RECTANGULAR
1522            if (str4.equals("AZSR") && c0.equals("G") && c2.equals("F")) //change 1
1523            {
1524                return TacticalLines.SENSOR_RECTANGULAR;
1525            }
1526            if (str4.equals("ACER") && c0.equals("G") && c2.equals("F")) //change 1
1527            {
1528                return TacticalLines.SENSOR_RECTANGULAR;
1529            }
1530            //SENSOR_CIRCULAR
1531            if (str4.equals("AZSC") && c0.equals("G") && c2.equals("F")) //change 1
1532            {
1533                return TacticalLines.SENSOR_CIRCULAR;
1534            }
1535            if (str4.equals("ACEC") && c0.equals("G") && c2.equals("F")) //change 1
1536            {
1537                return TacticalLines.SENSOR_CIRCULAR;
1538            }
1539            //CENSOR
1540            if (str4.equals("AZCI") && c0.equals("G") && c2.equals("F")) //change 1
1541            {
1542                return TacticalLines.CENSOR;
1543            }
1544            //CENSOR_RECTANGULAR
1545            if (str4.equals("AZCR") && c0.equals("G") && c2.equals("F")) //change 1
1546            {
1547                return TacticalLines.CENSOR_RECTANGULAR;
1548            }
1549            //CENSOR_CIRCULAR
1550            if (str4.equals("AZCC") && c0.equals("G") && c2.equals("F")) //change 1
1551            {
1552                return TacticalLines.CENSOR_CIRCULAR;
1553            }
1554            //DA
1555            if (str4.equals("AZDI") && c0.equals("G") && c2.equals("F")) //change 1
1556            {
1557                return TacticalLines.DA;
1558            }
1559            if (str4.equals("ACDI") && c0.equals("G") && c2.equals("F")) //change 1
1560            {
1561                return TacticalLines.DA;
1562            }
1563            //DA_RECTANGULAR
1564            if (str4.equals("AZDR") && c0.equals("G") && c2.equals("F")) //change 1
1565            {
1566                return TacticalLines.DA_RECTANGULAR;
1567            }
1568            if (str4.equals("ACDR") && c0.equals("G") && c2.equals("F")) //rev C
1569            {
1570                return TacticalLines.DA_RECTANGULAR;
1571            }
1572            //DA_CIRCULAR
1573            if (str4.equals("AZDC") && c0.equals("G") && c2.equals("F")) //change 1
1574            {
1575                return TacticalLines.DA_CIRCULAR;
1576            }
1577            if (str4.equals("ACDC") && c0.equals("G") && c2.equals("F")) //rev C
1578            {
1579                return TacticalLines.DA_CIRCULAR;
1580            }
1581            //CFZ
1582            if (str4.equals("ACFZ") && c0.equals("G") && c2.equals("F")) //change 1
1583            {
1584                return TacticalLines.CFZ;
1585            }
1586            if (str4.equals("AZFI") && c0.equals("G") && c2.equals("F")) //change 1
1587            {
1588                return TacticalLines.CFZ;
1589            }
1590            //CFZ_RECTANGULAR
1591            if (str4.equals("AZFR") && c0.equals("G") && c2.equals("F")) //change 1
1592            {
1593                return TacticalLines.CFZ_RECTANGULAR;
1594            }
1595            //CFZ_CIRCULAR
1596            if (str4.equals("AZFC") && c0.equals("G") && c2.equals("F")) //change 1
1597            {
1598                return TacticalLines.CFZ_CIRCULAR;
1599            }
1600            //ZOR
1601            if (str4.equals("AZZI") && c0.equals("G") && c2.equals("F")) //change 1
1602            {
1603                return TacticalLines.ZOR;
1604            }
1605            if (str4.equals("AZOR") && c0.equals("G") && c2.equals("F")) //change 1
1606            {
1607                return TacticalLines.ZOR;
1608            }
1609            if (str4.equals("ACZI") && c0.equals("G") && c2.equals("F")) //rev C
1610            {
1611                return TacticalLines.ZOR;
1612            }
1613            //ZOR_RECTANGULAR
1614            if (str4.equals("AZZR") && c0.equals("G") && c2.equals("F"))//change 1
1615            {
1616                return TacticalLines.ZOR_RECTANGULAR;
1617            }
1618            if (str4.equals("ACZR") && c0.equals("G") && c2.equals("F"))//rev C
1619            {
1620                return TacticalLines.ZOR_RECTANGULAR;
1621            }
1622            //ZOR_CIRCULAR
1623            if (str4.equals("AZZC") && c0.equals("G") && c2.equals("F"))//change 1
1624            {
1625                return TacticalLines.ZOR_CIRCULAR;
1626            }
1627            if (str4.equals("ACZC") && c0.equals("G") && c2.equals("F"))//rev C
1628            {
1629                return TacticalLines.ZOR_CIRCULAR;
1630            }
1631            //TBA
1632            if (str4.equals("AZBI") && c0.equals("G") && c2.equals("F"))//change 1
1633            {
1634                return TacticalLines.TBA;
1635            }
1636            if (str4.equals("ATBA") && c0.equals("G") && c2.equals("F"))//change 1
1637            {
1638                return TacticalLines.TBA;
1639            }
1640            if (str4.equals("ACBI") && c0.equals("G") && c2.equals("F"))//rev C
1641            {
1642                return TacticalLines.TBA;
1643            }
1644            //TBA_RECTANGULAR
1645            if (str4.equals("AZBR") && c0.equals("G") && c2.equals("F"))//change 1
1646            {
1647                return TacticalLines.TBA_RECTANGULAR;
1648            }
1649            if (str4.equals("ACBR") && c0.equals("G") && c2.equals("F"))//rev C
1650            {
1651                return TacticalLines.TBA_RECTANGULAR;
1652            }
1653            //TBA_CIRCULAR
1654            if (str4.equals("AZBC") && c0.equals("G") && c2.equals("F"))//change 1
1655            {
1656                return TacticalLines.TBA_CIRCULAR;
1657            }
1658            if (str4.equals("ACBC") && c0.equals("G") && c2.equals("F"))//rev C
1659            {
1660                return TacticalLines.TBA_CIRCULAR;
1661            }
1662            //TVAR
1663            if (str4.equals("AZVI") && c0.equals("G") && c2.equals("F"))//change 1
1664            {
1665                return TacticalLines.TVAR;
1666            }
1667            if (str4.equals("ACVI") && c0.equals("G") && c2.equals("F"))//rev C
1668            {
1669                return TacticalLines.TVAR;
1670            }
1671            //TVAR_RECTANGULAR
1672            if (str4.equals("AZVR") && c0.equals("G") && c2.equals("F")) //change 1
1673            {
1674                return TacticalLines.TVAR_RECTANGULAR;
1675            }
1676            if (str4.equals("ACVR") && c0.equals("G") && c2.equals("F")) //rev C
1677            {
1678                return TacticalLines.TVAR_RECTANGULAR;
1679            }
1680            //TVAR_CIRCULAR
1681            if (str4.equals("AZVC") && c0.equals("G") && c2.equals("F")) //change 1
1682            {
1683                return TacticalLines.TVAR_CIRCULAR;
1684            }
1685            if (str4.equals("ACVC") && c0.equals("G") && c2.equals("F")) //rev C
1686            {
1687                return TacticalLines.TVAR_CIRCULAR;
1688            }
1689            
1690            //KILLBOXBLUE
1691            if (str4.equals("AKBI") && c0.equals("G") && c2.equals("F"))//change 1
1692            {
1693                return TacticalLines.KILLBOXBLUE;
1694            }
1695            //KILLBOXBLUE_RECTANGULAR
1696            if (str4.equals("AKBR") && c0.equals("G") && c2.equals("F")) //change 1
1697            {
1698                return TacticalLines.KILLBOXBLUE_RECTANGULAR;
1699            }
1700            //KILLBOXBLUE_CIRCULAR
1701            if (str4.equals("AKBC") && c0.equals("G") && c2.equals("F")) //change 1
1702            {
1703                return TacticalLines.KILLBOXBLUE_CIRCULAR;
1704            }
1705            //KILLBOXPURPLE
1706            if (str4.equals("AKPI") && c0.equals("G") && c2.equals("F"))//change 1
1707            {
1708                return TacticalLines.KILLBOXPURPLE;
1709            }
1710            //KILLBOXPURPLE_RECTANGULAR
1711            if (str4.equals("AKPR") && c0.equals("G") && c2.equals("F")) //change 1
1712            {
1713                return TacticalLines.KILLBOXPURPLE_RECTANGULAR;
1714            }
1715            //KILLBOXPURPLE_CIRCULAR
1716            if (str4.equals("AKPC") && c0.equals("G") && c2.equals("F")) //change 1
1717            {
1718                return TacticalLines.KILLBOXPURPLE_CIRCULAR;
1719            }
1720            
1721            
1722            
1723            
1724            //RFL
1725            if (str3.equals("LCR") && c0.equals("G") && c2.equals("F")) //change 1
1726            {
1727                return TacticalLines.RFL;
1728            }
1729            //NFL
1730            if (str3.equals("LCN") && c0.equals("G") && c2.equals("F")) //change 1
1731            {
1732                return TacticalLines.NFL;
1733            }
1734            //MFP
1735            if (str3.equals("LCM") && c0.equals("G") && c2.equals("F")) //change 1
1736            {
1737                return TacticalLines.MFP;
1738            }
1739            //CFL
1740            if (str3.equals("LCC") && c0.equals("G") && c2.equals("F")) //change 1
1741            {
1742                return TacticalLines.CFL;
1743            }
1744            //FSCL
1745            if (str3.equals("LCF") && c0.equals("G") && c2.equals("F")) //change 1
1746            {
1747                return TacticalLines.FSCL;
1748            }
1749            //LINTGTS
1750            if (str3.equals("LTS") && c0.equals("G") && c2.equals("F")) //change 1
1751            {
1752                return TacticalLines.LINTGTS;
1753            }
1754            //RANGE_FAN
1755            if (str3.equals("AXC") && c0.equals("G") && c2.equals("F")) //change 1
1756            {
1757                return TacticalLines.RANGE_FAN;
1758            }
1759            //RANGE_FAN_SECTOR
1760            if (str3.equals("AXS") && c0.equals("G") && c2.equals("F")) //change 1
1761            {
1762                return TacticalLines.RANGE_FAN_SECTOR;
1763            }
1764            //FPF
1765            if (str3.equals("LTF") && c0.equals("G") && c2.equals("F")) //change 1
1766            {
1767                return TacticalLines.FPF;
1768            }
1769            //SFENCE
1770            if (str3.equals("OWS") && c0.equals("G") && c2.equals("M")) {
1771                return TacticalLines.SFENCE;
1772            }
1773            //DFENCE
1774            if (str3.equals("OWD") && c0.equals("G") && c2.equals("M")) {
1775                return TacticalLines.DFENCE;
1776            }
1777            //DOUBLEA
1778            if (str3.equals("OWA") && c0.equals("G") && c2.equals("M")) {
1779                return TacticalLines.DOUBLEA;
1780            }
1781            //UNSP
1782            if (str3.equals("OWU") && c0.equals("G") && c2.equals("M")) {
1783                return TacticalLines.UNSP;
1784            }
1785            //LWFENCE
1786            if (str3.equals("OWL") && c0.equals("G") && c2.equals("M")) {
1787                return TacticalLines.LWFENCE;
1788            }
1789            //HWFENCE
1790            if (str3.equals("OWH") && c0.equals("G") && c2.equals("M")) {
1791                return TacticalLines.HWFENCE;
1792            }
1793            //ATDITCHM
1794            if (str3.equals("OAR") && c0.equals("G") && c2.equals("M")) {
1795                return TacticalLines.ATDITCHM;
1796            }
1797            //BELT
1798            if (str3.equals("OGB") && c0.equals("G") && c2.equals("M")) {
1799                return TacticalLines.BELT; //use BELT for area, BELT1 for line
1800                //return TacticalLines.BELT1;
1801            }
1802            //ATWALL
1803            if (str3.equals("OAW") && c0.equals("G") && c2.equals("M")) {
1804                return TacticalLines.ATWALL;
1805            }
1806            //AMBUSH
1807            if (str3.equals("SLA") && c0.equals("G") && c2.equals("G")) {
1808                return TacticalLines.AMBUSH;
1809            }
1810            //ROZ
1811            if (str3.equals("AAR") && c0.equals("G") && c2.equals("G")) {
1812                return TacticalLines.ROZ;
1813            }
1814            //IL
1815            if (str3.equals("OLI") && c0.equals("G") && c2.equals("G")) {
1816                return TacticalLines.IL;
1817            }
1818            //PLANNED
1819            if (str3.equals("ORP") && c0.equals("G") && c2.equals("M")) {
1820                return TacticalLines.PLANNED;
1821            }
1822            //ESR1
1823            if (str3.equals("ORS") && c0.equals("G") && c2.equals("M")) {
1824                return TacticalLines.ESR1;
1825            }
1826            //ESR2
1827            if (str3.equals("ORA") && c0.equals("G") && c2.equals("M")) {
1828                return TacticalLines.ESR2;
1829            }
1830            //ROADBLK
1831            if (str3.equals("ORC") && c0.equals("G") && c2.equals("M")) {
1832                return TacticalLines.ROADBLK;
1833            }
1834            //PLD
1835            if (str3.equals( "OLP") && c0.equals( "G") && c2.equals( "G")) {
1836                return TacticalLines.PLD;
1837            }
1838            //BYDIF
1839            if (str3.equals( "BDD") && c0.equals( "G") && c2.equals( "M")) {
1840                return TacticalLines.BYDIF;
1841            }
1842            //BYIMP
1843            if (str3.equals( "BDI") && c0.equals( "G") && c2.equals( "M")) {
1844                return TacticalLines.BYIMP;
1845            }
1846            //EASY
1847            if (str3.equals( "BDE") && c0.equals( "G") && c2.equals( "M")) {
1848                return TacticalLines.EASY;
1849            }
1850            //FLOT
1851            if (str3.equals("GLF") && c0.equals("G") && c2.equals("G")) {
1852                    return TacticalLines.FLOT;
1853            }
1854            //LC
1855            if (str3.equals("GLC") && c0.equals("G") && c2.equals("G"))  {
1856                    return TacticalLines.LC;
1857            }
1858            //LDLC
1859            if (str3.equals("OLC") && c0.equals("G") && c2.equals("G"))  {
1860                return TacticalLines.LDLC;
1861            }
1862            //ZONE
1863            if (str3.equals("OGZ") && c0.equals("G") && c2.equals("M"))  {
1864                return TacticalLines.ZONE;
1865            }
1866            //ENCIRCLE
1867            if (str3.equals("SAE") && c0.equals("G") && c2.equals("G"))  {
1868                return TacticalLines.ENCIRCLE;
1869            }
1870            //areas
1871            //BATTLE
1872            if (str3.equals("DAB") && c0.equals("G") && c2.equals("G"))  {
1873                return TacticalLines.BATTLE;
1874            }
1875            //ASSY
1876            if (str3.equals("GAA") && c0.equals("G") && c2.equals("G"))  {
1877                return TacticalLines.ASSY;
1878            }
1879            //TAI
1880            if (str3.equals("SAT") && c0.equals("G") && c2.equals("G"))  {
1881                return TacticalLines.TAI;
1882            }
1883            //BSA
1884            if (str3.equals("ASB") && c0.equals("G") && c2.equals("S"))  {
1885                return TacticalLines.BSA;
1886            }
1887            //DSA
1888            if (str3.equals("ASD") && c0.equals("G") && c2.equals("S"))  {
1889                return TacticalLines.DSA;
1890            }
1891            //EA
1892            if (str3.equals("GAE") && c0.equals("G") && c2.equals("G"))  {
1893                return TacticalLines.EA;
1894            }
1895            //NAI
1896            if (str3.equals("SAN") && c0.equals("G") && c2.equals("G"))  {
1897                return TacticalLines.NAI;
1898            }
1899
1900            //FORT
1901            if (str3.equals("GAF") && c0.equals("G") && c2.equals("G")) {
1902                return TacticalLines.FORT;
1903            }
1904            //OBSAREA
1905            if (str3.equals("OGR") && c0.equals("G") && c2.equals("M")) {
1906                return TacticalLines.OBSAREA;
1907            }
1908            //OBSFAREA
1909            if (str3.equals("OGF") && c0.equals("G") && c2.equals("M")) {
1910                return TacticalLines.OBSFAREA;
1911            }
1912            //PZ
1913            if (str3.equals("GAP") && c0.equals("G") && c2.equals("G")) {
1914                return TacticalLines.PZ;
1915            }
1916            //LZ
1917            if (str3.equals("GAL") && c0.equals("G") && c2.equals("G")) {
1918                return TacticalLines.LZ;
1919            }
1920            //DZ
1921            if (str3.equals("GAD") && c0.equals("G") && c2.equals("G")) {
1922                return TacticalLines.DZ;
1923            }
1924            //FAADZ
1925            if (str3.equals("AAF") && c0.equals("G") && c2.equals("G")) {
1926                return TacticalLines.FAADZ;
1927            }
1928            //MEZ
1929            if (str3.equals("AAM") && c0.equals("G") && c2.equals("G")) {
1930                return TacticalLines.MEZ;
1931            }
1932            //WFZ
1933            if (str3.equals("AAW") && c0.equals("G") && c2.equals("G")) {
1934                return TacticalLines.WFZ;
1935            }
1936            //FEBA
1937            if (str3.equals("DLF") && c0.equals("G") && c2.equals("G")) {
1938                return TacticalLines.FEBA;
1939            }
1940            //SAAFR
1941            if (str3.equals("ALS") && c0.equals("G") && c2.equals("G")) {
1942                return TacticalLines.SAAFR;
1943            }
1944            //LLFR
1945            if (str3.equals("ALL") && c0.equals("G") && c2.equals("G")) {
1946                return TacticalLines.LLTR;
1947            }
1948            //AC
1949            if (str3.equals("ALC") && c0.equals("G") && c2.equals("G")) {
1950                return TacticalLines.AC;
1951            }
1952            //MRR
1953            if (str3.equals("ALM") && c0.equals("G") && c2.equals("G")) {
1954                return TacticalLines.MRR;
1955            }
1956            //UAV
1957            if (str3.equals("ALU") && c0.equals("G") && c2.equals("G")) {
1958                return TacticalLines.UAV;
1959            }
1960            //FERRY
1961            if (str3.equals("BCF") && c0.equals("G") && c2.equals("M")) {
1962                return TacticalLines.FERRY;
1963            }
1964            //BRIDGE
1965            if (str3.equals("BCB") && c0.equals("G") && c2.equals("M")) {
1966                return TacticalLines.BRIDGE;
1967            }
1968            //ASLTXING
1969            if (str3.equals("BCA") && c0.equals("G") && c2.equals("M")) {
1970                return TacticalLines.ASLTXING;
1971            }
1972            //GAP
1973            if (str3.equals("OFG") && c0.equals("G") && c2.equals("M")) {
1974                return TacticalLines.GAP;
1975            }
1976            //OVERHEAD_WIRE
1977            if (str3.equals("OHO") && c0.equals("G") && c2.equals("M")) {
1978                return TacticalLines.OVERHEAD_WIRE;
1979            }
1980            //FORDSITE
1981            if (str3.equals("BCE") && c0.equals("G") && c2.equals("M")) {
1982                return TacticalLines.FORDSITE;
1983            }
1984            //MFLANE
1985            if (str3.equals("BCL") && c0.equals("G") && c2.equals("M")) {
1986                return TacticalLines.MFLANE;
1987            }
1988            //RAFT
1989            if (str3.equals("BCR") && c0.equals("G") && c2.equals("M")) {
1990                return TacticalLines.RAFT;
1991            }
1992            //MNFLDDIS
1993            if (str3.equals("OED") && c0.equals("G") && c2.equals("M")) {
1994                return TacticalLines.MNFLDDIS;
1995            }
1996            //MSR
1997            if (str3.equals("LRM") && c0.equals("G") && c2.equals("S")) {
1998                return TacticalLines.MSR;
1999            }
2000            //ASR
2001            if (str3.equals("LRA") && c0.equals("G") && c2.equals("S")) {
2002                return TacticalLines.ASR;
2003            }
2004            //LL
2005            if (str3.equals("GLL") && c0.equals("G") && c2.equals("G")) {
2006                return TacticalLines.LL;
2007            }
2008            //LOD
2009            if (str3.equals("OLT") && c0.equals("G") && c2.equals("G")) {
2010                return TacticalLines.LOD;
2011            }
2012            //PL
2013            if (str3.equals("GLP") && c0.equals("G") && c2.equals("G")) {
2014                return TacticalLines.PL;
2015            }
2016            //FCL
2017            if (str3.equals("OLF") && c0.equals("G") && c2.equals("G")) {
2018                return TacticalLines.FCL;
2019            }
2020            //LOA
2021            if (str3.equals("OLL") && c0.equals("G") && c2.equals("G")) {
2022                return TacticalLines.LOA;
2023            }
2024            //BRDGHD
2025            if (str3.equals("SLB") && c0.equals("G") && c2.equals("G")) {
2026                return TacticalLines.BRDGHD;
2027            }
2028            //MNFLDFIX
2029            if (str3.equals("OEF") && c0.equals("G") && c2.equals("M")) {
2030                return TacticalLines.MNFLDFIX;
2031            }
2032            //MNFLDBLK
2033            if (str3.equals("OEB") && c0.equals("G") && c2.equals("M")) {
2034                return TacticalLines.MNFLDBLK;
2035            }
2036            //ONEWAY
2037            if (str3.equals("LRO") && c0.equals("G") && c2.equals("S")) {
2038                return TacticalLines.ONEWAY;
2039            }
2040            //ALT
2041            if (str3.equals("LRT") && c0.equals("G") && c2.equals("S")) {
2042                return TacticalLines.ALT;
2043            }
2044            //TWOWAY
2045            if (str3.equals("LRW") && c0.equals("G") && c2.equals("S")) {
2046                return TacticalLines.TWOWAY;
2047            }
2048            //RSA
2049            if (str3.equals("ASR") && c0.equals("G") && c2.equals("S")) {
2050                return TacticalLines.RSA;
2051            }
2052            //BOUNDARY
2053            if (str3.equals("GLB") && c0.equals("G") && c2.equals("G")) {
2054                return TacticalLines.BOUNDARY;
2055            }
2056            //GENERAL
2057            if (str3.equals("GAG") && c0.equals("G") && c2.equals("G")) {
2058                return TacticalLines.GENERAL;
2059            }
2060            //EZ
2061            if (str3.equals("GAX") && c0.equals("G") && c2.equals("G")) {
2062                return TacticalLines.EZ;
2063            }
2064            //AIRFIELD
2065            if (str3.equals("GAZ") && c0.equals("G") && c2.equals("G")) {
2066                return TacticalLines.AIRFIELD;
2067            }
2068            //HIDACZ
2069            if (str3.equals("AAH") && c0.equals("G") && c2.equals("G")) {
2070                return TacticalLines.HIDACZ;
2071            }
2072            //EA1
2073            if (str3.equals("DAE") && c0.equals("G") && c2.equals("G")) {
2074                return TacticalLines.EA1;
2075            }
2076            //ASSAULT
2077            if (str3.equals("OAA") && c0.equals("G") && c2.equals("G")) {
2078                return TacticalLines.ASSAULT;
2079            }
2080            //ATKPOS
2081            if (str3.equals("OAK") && c0.equals("G") && c2.equals("G")) {
2082                return TacticalLines.ATKPOS;
2083            }
2084            //OBJ
2085            if (str3.equals("OAO") && c0.equals("G") && c2.equals("G")) {
2086                return TacticalLines.OBJ;
2087            }
2088            //AO
2089            if (str3.equals("SAO") && c0.equals("G") && c2.equals("G")) {
2090                return TacticalLines.AO;
2091            }
2092            //AIRHEAD
2093            if (str3.equals("SAA") && c0.equals("G") && c2.equals("G")) {
2094                return TacticalLines.AIRHEAD;
2095            }
2096
2097            //PEN
2098            if (str3.equals("OAP") && c0.equals("G") && c2.equals("G")) {
2099                return TacticalLines.PEN;
2100            }
2101            //HOLD
2102            if (str3.equals("SLH") && c0.equals("G") && c2.equals("G")) {
2103                return TacticalLines.HOLD;
2104            }
2105            //RELEASE
2106            if (str3.equals("SLR") && c0.equals("G") && c2.equals("G")) {
2107                return TacticalLines.RELEASE;
2108            }
2109            //DEPICT
2110            if (str3.equals("OFD") && c0.equals("G") && c2.equals("M")) {
2111                return TacticalLines.DEPICT;
2112            }
2113            //MINED
2114            if (str3.equals("OFA") && c0.equals("G") && c2.equals("M")) {
2115                return TacticalLines.MINED;
2116            }
2117            //SARA
2118            if (str3.equals("GAS") && c0.equals("G") && c2.equals("G")) {
2119                return TacticalLines.SARA;
2120            }
2121            //LAA
2122            if (str3.equals("GAY") && c0.equals("G") && c2.equals("G")) {
2123                return TacticalLines.LAA;
2124            }
2125            //PDF
2126            if (str3.equals("DLP") && c0.equals("G") && c2.equals("G")) {
2127                return TacticalLines.PDF;
2128            }
2129
2130            //ATKBYFIRE
2131            if (str3.equals("OAF") && c0.equals("G") && c2.equals("G")) {
2132                return TacticalLines.ATKBYFIRE;
2133            }
2134            //SPTBYFIRE
2135            if (str3.equals("OAS") && c0.equals("G") && c2.equals("G")) {
2136                return TacticalLines.SPTBYFIRE;
2137            }
2138            //CLUSTER
2139            if (str3.equals("OMC") && c0.equals("G") && c2.equals("M")) {
2140                return TacticalLines.CLUSTER;
2141            }
2142            //TURN
2143            if (str3.equals("OET") && c0.equals("G") && c2.equals("M")) {
2144                return TacticalLines.TURN;
2145            }
2146            //CONVOY
2147            if (str3.equals("LCM") && c0.equals("G") && c2.equals("S")) {
2148                return TacticalLines.CONVOY;
2149            }
2150            //HCONVOY
2151            if (str3.equals("LCH") && c0.equals("G") && c2.equals("S")) {
2152                return TacticalLines.HCONVOY;
2153            }
2154            //LINE
2155            if (str3.equals("OGL") && c0.equals("G") && c2.equals("M")) {
2156                return TacticalLines.LINE;
2157            }
2158            //FORDIF
2159            if (str3.equals("BCD") && c0.equals("G") && c2.equals("M")) {
2160                return TacticalLines.FORDIF;
2161            }
2162            //TRP
2163            if (str3.equals("DPT") && c0.equals("G") && c2.equals("G")) {
2164                return TacticalLines.TRP;
2165            }
2166
2167            //RECTANGULAR
2168            if (str3.equals("ATR") && c0.equals("G") && c2.equals("F")) {
2169                return TacticalLines.RECTANGULAR;
2170            }
2171            //CIRCULAR
2172            if (str3.equals("ATC") && c0.equals("G") && c2.equals("F")) {
2173                return TacticalLines.CIRCULAR;
2174            }
2175            //SERIES
2176            if (str3.equals("ATG") && c0.equals("G") && c2.equals("F")) {
2177                return TacticalLines.SERIES;
2178            }
2179            //SMOKE
2180            if (str3.equals("ATS") && c0.equals("G") && c2.equals("F")) {
2181                return TacticalLines.SMOKE;   // Mitch 7-9-07
2182            }                           //BOMB
2183            if (str3.equals("ATB") && c0.equals("G") && c2.equals("F")) {
2184                return TacticalLines.BOMB;
2185            }
2186            //TGMF
2187            if (str3.equals("ACT") && c0.equals("G") && c2.equals("F")) {
2188                return TacticalLines.TGMF;
2189            }
2190
2191            //TRIP
2192            if (str2.equals("OT") && c0.equals("G") && c2.equals("M")) {
2193                return TacticalLines.TRIP;
2194            }
2195            //ABATIS
2196            if (str2.equals("OS") && c0.equals("G") && c2.equals("M")) {
2197                return TacticalLines.ABATIS;
2198            }
2199            //UXO
2200            if (str2.equals("OU") && c0.equals("G") && c2.equals("M")) {
2201                return TacticalLines.UXO;
2202            }
2203            //DHA
2204            if (str2.equals("AD") && c0.equals("G") && c2.equals("S")) {
2205                return TacticalLines.DHA;
2206            }
2207            //EPW
2208            if (str2.equals("AE") && c0.equals("G") && c2.equals("S")) {
2209                return TacticalLines.EPW;
2210            }
2211            //RHA
2212            if (str2.equals("AH") && c0.equals("G") && c2.equals("S")) {
2213                return TacticalLines.RHA;
2214            }
2215
2216            if (str2.equals("NL") && c0.equals("G") && c2.equals("M")) {
2217                return TacticalLines.DRCL;
2218            }
2219            //RAD
2220            if (str2.equals("NR") && c0.equals("G") && c2.equals("M")) {
2221                return TacticalLines.RAD;
2222            }
2223            //CHEM
2224            if (str2.equals("NC") && c0.equals("G") && c2.equals("M")) {
2225                return TacticalLines.CHEM;
2226            }
2227            //BIO
2228            if (str2.equals("NB") && c0.equals("G") && c2.equals("M")) {
2229                return TacticalLines.BIO;
2230            }
2231
2232            if (str2.equals("AF") && c0.equals("G") && c2.equals("F")) {
2233                return TacticalLines.FFA;
2234            }
2235            //FSA
2236            if (str2.equals("AA") && c0.equals("G") && c2.equals("F")) {
2237                return TacticalLines.FSA;
2238            }
2239            //RFA
2240            if (str2.equals("AR") && c0.equals("G") && c2.equals("F")) {
2241                return TacticalLines.RFA;
2242            }
2243            //FOLSP
2244            if (str2.equals("AS") && c0.equals("G") && c2.equals("T")) {
2245                return TacticalLines.FOLSP;
2246            }
2247            //FARP
2248            if (str2.equals("AR") && c0.equals("G") && c2.equals("S")) {
2249                return TacticalLines.FARP;
2250            }
2251            //AAFNT
2252            if (str2.equals("PA") && c0.equals("G") && c2.equals("G")) {
2253                return TacticalLines.AAFNT;
2254            }
2255            //DIRATKFNT
2256            if (str2.equals("PF") && c0.equals("G") && c2.equals("G")) {
2257                return TacticalLines.DIRATKFNT;
2258            }
2259            //STRONG
2260            if (str2.equals("SP") && c0.equals("G") && c2.equals("M")) {
2261                return TacticalLines.STRONG;
2262            }
2263            //LINTGT
2264            if (str2.equals("LT") && c0.equals("G") && c2.equals("F")) {
2265                return TacticalLines.LINTGT;
2266            }
2267            //FORTL
2268            if (str2.equals("SL") && c0.equals("G") && c2.equals("M")) {
2269                return TacticalLines.FORTL;
2270            }
2271            //FPF
2272            if (str2.equals("LP") && c0.equals("G") && c2.equals("F")) {
2273                return TacticalLines.FPF;
2274            }
2275            //ACA
2276            if (str2.equals("AC") && c0.equals("G") && c2.equals("F")) {
2277                return TacticalLines.ACA;
2278            }
2279            //AT
2280            if (str2.equals("AT") && c0.equals("G") && c2.equals("F")) {
2281                return TacticalLines.AT;
2282            }
2283            //SMOKE
2284            if (str2.equals("AK") && c0.equals("G") && c2.equals("F")) {
2285                return TacticalLines.SMOKE;
2286            }
2287            //SERIES
2288            if (str2.equals("AS") && c0.equals("G") && c2.equals("F")) {
2289                return TacticalLines.SERIES;
2290            }
2291            //BOMB
2292            if (str2.equals("AB") && c0.equals("G") && c2.equals("F")) {
2293                return TacticalLines.BOMB;
2294            }
2295            //ELECTRO
2296            if (str2.equals("BE") && c0.equals("G") && c2.equals("O")) {
2297                return TacticalLines.ELECTRO;
2298            }
2299            //ACOUSTIC
2300            if (str2.equals("BA") && c0.equals("G") && c2.equals("O")) {
2301                return TacticalLines.ACOUSTIC;
2302            }
2303            //TORPEDO
2304            if (str2.equals("BT") && c0.equals("G") && c2.equals("O")) {
2305                return TacticalLines.TORPEDO;
2306            }
2307            //OPTICAL
2308            if (str2.equals("BO") && c0.equals("G") && c2.equals("O")) {
2309                return TacticalLines.OPTICAL;
2310            }
2311            //DECOY
2312            if (str2.equals("PC") && c0.equals("G") && c2.equals("G")) {
2313                return TacticalLines.DUMMY;
2314            }
2315
2316            //DUMMY_STATIC
2317            if (str2.equals("PN") && c0.equals("G") && c2.equals("G")) {
2318                return TacticalLines.DUMMY_STATIC;
2319            }
2320            //COVER
2321            if (str2.equals("UC") && c0.equals("G") && c2.equals("T")) {
2322                if(rev==RendererSettings.Symbology_2525C)
2323                    return TacticalLines.COVER_REVC;
2324                else
2325                    return TacticalLines.COVER;
2326            }
2327            //SCREEN
2328            if (str2.equals("US") && c0.equals("G") && c2.equals("T")) {
2329                if(rev==RendererSettings.Symbology_2525C)
2330                    return TacticalLines.SCREEN_REVC;
2331                else
2332                    return TacticalLines.SCREEN;
2333            }
2334            //GUARD
2335            if (str2.equals("UG") && c0.equals("G") && c2.equals("T")) {
2336                if(rev==RendererSettings.Symbology_2525C)
2337                    return TacticalLines.GUARD_REVC;
2338                else
2339                    return TacticalLines.GUARD;
2340            }
2341            //DECOY MINED AREA
2342            if (str2.equals("PM") && c0.equals("G") && c2.equals("G")) {
2343                return TacticalLines.DMA;
2344            }
2345            //DECOY MINED AREA FENCED
2346            if (str2.equals("PY") && c0.equals("G") && c2.equals("G")) {
2347                return TacticalLines.DMAF;
2348            }
2349            //DECEIVE
2350            if (str2.equals("PD") && c0.equals("G") && c2.equals("G")) {
2351                return TacticalLines.DECEIVE;
2352            }
2353            //FOXHOLE
2354            if (str2.equals("SW") && c0.equals("G") && c2.equals("M")) {
2355                return TacticalLines.FOXHOLE;
2356            }
2357            //CATKBYFIRE
2358            if (str2.equals("KF") && c0.equals("G") && c2.equals("T")) {
2359                return TacticalLines.CATKBYFIRE;
2360            }
2361            //DRCL
2362            if (str2.equals("NL") && c0.equals("G") && c2.equals("M")) {
2363                return TacticalLines.DRCL;
2364            }
2365            //MSDZ
2366            if (str2.equals("NM") && c0.equals("G") && c2.equals("M")) {
2367                return TacticalLines.MSDZ;
2368            }
2369            //WDRAWUP
2370            if (str2.equals("WP") && c0.equals("G") && c2.equals("T")) {
2371                return TacticalLines.WDRAWUP;
2372            }
2373            //NAVIGATION
2374            if (str2.equals("HN") && c0.equals("G") && c2.equals("O")) {
2375                return TacticalLines.NAVIGATION;
2376            }
2377            //FORTP
2378            if (str2.equals("SF") && c0.equals("G") && c2.equals("M")) {
2379                return TacticalLines.FORTP;
2380            }
2381
2382            //RIP
2383            if (str1.equals("R") && c0.equals("G") && c2.equals("T")) {
2384                return TacticalLines.RIP;
2385            }
2386            //FOLLA
2387            if (str1.equals("A") && c0.equals("G") && c2.equals("T")) {
2388                return TacticalLines.FOLLA;
2389            }
2390            //RETIRE
2391            if (str1.equals("M") && c0.equals("G") && c2.equals("T")) {
2392                return TacticalLines.RETIRE;
2393            }
2394            //BEARING
2395            if (str1.equals("B") && c0.equals("G") && c2.equals("O")) {
2396                return TacticalLines.BEARING;
2397            }
2398            //DELAY
2399            if (str1.equals("L") && c0.equals("G") && c2.equals("T")) {
2400                return TacticalLines.DELAY;
2401            }
2402
2403            //CODON AND SEARCH
2404            if (str1.equals("V") && c0.equals("G") && c2.equals("T")) {
2405                return TacticalLines.CORDONSEARCH;
2406            }
2407            //CODON AND KNOCK
2408            if (str1.equals("2") && c0.equals("G") && c2.equals("T")) {
2409                return TacticalLines.CORDONKNOCK;
2410            }
2411
2412            //WITHDRAW
2413            if (str1.equals("W") && c0.equals("G") && c2.equals("T")) {
2414                return TacticalLines.WITHDRAW;
2415            }
2416            //BREACH
2417            if (str1.equals("H") && c0.equals("G") && c2.equals("T")) {
2418                return TacticalLines.BREACH;
2419            }
2420            //CANALIZE
2421            if (str1.equals("C") && c0.equals("G") && c2.equals("T")) {
2422                return TacticalLines.CANALIZE;
2423            }
2424            //BYPASS
2425            if (str1.equals("Y") && c0.equals("G") && c2.equals("T")) {
2426                return TacticalLines.BYPASS;
2427            }
2428            //BLOCK
2429            if (str1.equals("B") && c0.equals("G") && c2.equals("T")) {
2430                return TacticalLines.BLOCK;
2431            }
2432            //DISRUPT
2433            if (str1.equals("T") && c0.equals("G") && c2.equals("T")) {
2434                return TacticalLines.DISRUPT;
2435            }
2436            //SEIZE
2437            if (str1.equals("Z") && c0.equals("G") && c2.equals("T")) {
2438                //return TacticalLines.SEIZE;
2439                if(rev==RendererSettings.Symbology_2525C)
2440                    return TacticalLines.SEIZE_REVC;
2441                else
2442                    return TacticalLines.SEIZE;
2443            }
2444            //SECURE
2445            if (str1.equals("S") && c0.equals("G") && c2.equals("T")) {
2446                return TacticalLines.SECURE;
2447            }
2448            //RETAIN
2449            if (str1.equals("Q") && c0.equals("G") && c2.equals("T")) {
2450                return TacticalLines.RETAIN;
2451            }
2452            //PENETRATE
2453            if (str1.equals("P") && c0.equals("G") && c2.equals("T")) {
2454                return TacticalLines.PENETRATE;
2455            }
2456            //ISOLATE
2457            if (str1.equals("E") && c0.equals("G") && c2.equals("T")) {
2458                return TacticalLines.ISOLATE;
2459            }
2460            //CLEAR
2461            if (str1.equals("X") && c0.equals("G") && c2.equals("T")) {
2462                return TacticalLines.CLEAR;
2463            }
2464            //CONTAIN
2465            if (str1.equals("J") && c0.equals("G") && c2.equals("T")) {
2466                return TacticalLines.CONTAIN;
2467            }
2468            //OCCUPY
2469            if (str1.equals("O") && c0.equals("G") && c2.equals("T")) {
2470                return TacticalLines.OCCUPY;
2471            }
2472            //FIX
2473            if (str1.equals("F") && c0.equals("G") && c2.equals("T")) {
2474                return TacticalLines.FIX;
2475            }
2476            //CATK:
2477            if (str1.equals("K") && c0.equals("G") && c2.equals("T")) {
2478                return TacticalLines.CATK;
2479            }
2480            //DESTROY
2481            if (str1.equals("D") && c0.equals("G") && c2.equals("T")) {
2482                return TacticalLines.DESTROY;
2483            }
2484            //INTERDICT
2485            if (str1.equals("I") && c0.equals("G") && c2.equals("T")) {
2486                return TacticalLines.INTERDICT;
2487            }
2488            //NEUTRALIZE
2489            if (str1.equals("N") && c0.equals("G") && c2.equals("T")) {
2490                return TacticalLines.NEUTRALIZE;
2491            }
2492
2493        }
2494        catch(Exception exc)
2495        {
2496            ErrorLogger.LogException(_className ,"CGetLinetypeFromString",
2497                    new RendererException("Failed inside CGetLinetypeFromString " + strLine, exc));
2498        }
2499        return -1;
2500    }
2501    /**
2502     * Return true is the line type is a channel type
2503     * @param lineType line type
2504     * @return
2505     */
2506    public static int CIsChannel(int lineType) {
2507        int lResult = 0;
2508        try {
2509            switch (lineType) {
2510                case TacticalLines.CATK:
2511                case TacticalLines.CATKBYFIRE:
2512                case TacticalLines.LC:
2513                case TacticalLines.LC2:
2514                case TacticalLines.AAFNT:
2515                case TacticalLines.AAFNT_STRAIGHT:
2516                case TacticalLines.AXAD:
2517                case TacticalLines.AIRAOA:
2518                case TacticalLines.AAAAA:
2519                case TacticalLines.MAIN:
2520                case TacticalLines.MAIN_STRAIGHT:
2521                case TacticalLines.SPT:
2522                case TacticalLines.SPT_STRAIGHT:
2523                case TacticalLines.UNSP:
2524                case TacticalLines.SFENCE:
2525                case TacticalLines.DFENCE:
2526                case TacticalLines.DOUBLEA:
2527                case TacticalLines.LWFENCE:
2528                case TacticalLines.HWFENCE:
2529                case TacticalLines.BBS_LINE:
2530                case TacticalLines.SINGLEC:
2531                case TacticalLines.SINGLEC2:
2532                case TacticalLines.DOUBLEC:
2533                case TacticalLines.DOUBLEC2:
2534                case TacticalLines.TRIPLE:
2535                case TacticalLines.TRIPLE2:
2536                case TacticalLines.CHANNEL:
2537                case TacticalLines.CHANNEL_FLARED:
2538                case TacticalLines.CHANNEL_DASHED:
2539                    //case TacticalLines.BELT:  //change 2
2540                    lResult = 1;
2541                    break;
2542                default:
2543                    lResult = 0;
2544                    break;
2545            }
2546        } 
2547        catch (Exception exc)
2548        {
2549            ErrorLogger.LogException(_className ,"CIsChannel",
2550                    new RendererException("Failed inside CIsChannel " + Integer.toString(lineType), exc));
2551        }
2552        return lResult;
2553    }
2554    private static String _client="";
2555    public static void setClient(String value)
2556    {
2557        _client=value;
2558        Channels.setClient(value);
2559    }
2560    public static String getClient()
2561    {
2562        return _client;
2563    }
2564//    public static void setMinLength(double value)
2565//    {
2566//        DISMSupport.setMinLength(value);
2567//        arraysupport.setMinLength(value);
2568//        countsupport.setMinLength(value);
2569//        return;
2570//    }
2571}