예제 #1
0
        static void Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("Usage: ExtractLinkedIndex.exe <TSR OPERA persistence path> <sheet id> <output ASCII file>");
                Console.WriteLine("or: ExtractLinkedIndex.exe <TSR OPERA persistence path> <sheet id> <output TLG file>");
                return;
            }
            SySal.TotalScan.Volume v = (SySal.TotalScan.Volume)SySal.OperaPersistence.Restore(args[0], typeof(SySal.TotalScan.Volume));
            int i, n;

            n = Convert.ToInt32(args[1]);
            SySal.TotalScan.Layer layer = null;
            for (i = 0; i < v.Layers.Length; i++)
            {
                layer = v.Layers[i];
                if (layer.SheetId == n)
                {
                    break;
                }
            }
            n = layer.Length;
            Console.WriteLine("Found layer " + layer.Id + " SheetId " + layer.SheetId);
            Console.WriteLine(n + " tracks found");
            int selected = 0;

            if (args[2].ToLower().EndsWith(".tlg"))
            {
                System.Collections.ArrayList ar = new System.Collections.ArrayList();
                for (i = 0; i < n; i++)
                {
                    SySal.TotalScan.Segment s = layer[i];
                    if (s.TrackOwner != null && s.TrackOwner.Length > 1)
                    {
                        ar.Add(i);
                        selected++;
                    }
                }
                SySal.Scanning.Plate.IO.OPERA.LinkedZone.BaseTrackIgnoreAlignment ai = new SySal.Scanning.Plate.IO.OPERA.LinkedZone.BaseTrackIgnoreAlignment();
                ai.Ids = (int[])ar.ToArray(typeof(int));
                SySal.OperaPersistence.Persist(args[2], ai);
            }
            else
            {
                System.IO.StreamWriter w = new System.IO.StreamWriter(args[2], false);
                w.WriteLine("Index");
                for (i = 0; i < n; i++)
                {
                    SySal.TotalScan.Segment s = layer[i];
                    if (s.TrackOwner != null && s.TrackOwner.Length > 1)
                    {
                        w.WriteLine(i);
                        selected++;
                    }
                }
                w.Flush();
                w.Close();
            }
            Console.WriteLine(selected + " tracks selected");
        }
예제 #2
0
        static void Main(string[] args)
        {
            //
            // TODO: Add code to start application here
            //
#if (!(DEBUG))
            try
            {
#endif
            if (args.Length != 2)
            {
                Console.WriteLine("usage: OperaCopy <source> <dest>");
                Console.WriteLine("supported types: TLG, TSR, RWC, RWD, XML");

                Console.WriteLine("TLG -------- input");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.Scanning.Plate.IO.OPERA.LinkedZone), true, true));
                Console.WriteLine("TLB = TLG, full base track info; TLS = TLG, geometrical base track info only.");
                Console.WriteLine("TLG -------- output");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.Scanning.Plate.IO.OPERA.LinkedZone), false, true));
                Console.WriteLine("AI -------- output");
                Console.WriteLine("Alignment Ignore sections of TLG files translated to text files");
                Console.WriteLine("BI -------- output");
                Console.WriteLine("BaseTrack Index sections of TLG files translated to text files");
                Console.WriteLine("DBMI -------- output");
                Console.WriteLine("DB MicroTrack Index sections of TLG files translated to text files");

                Console.WriteLine("TSR -------- input");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.TotalScan.Volume), true, true));
                Console.WriteLine("TSR -------- output");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.TotalScan.Volume), false, true));

                Console.WriteLine("RWC -------- input");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.Scanning.Plate.IO.OPERA.RawData.Catalog), true, true));
                Console.WriteLine("RWC -------- output");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.Scanning.Plate.IO.OPERA.RawData.Catalog), false, true));

                Console.WriteLine("RWD -------- input");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.Scanning.Plate.IO.OPERA.RawData.Fragment), true, true));
                Console.WriteLine("RWD -------- output");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.Scanning.Plate.IO.OPERA.RawData.Fragment), false, true));

                Console.WriteLine("XML -------- input");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.OperaDb.ComputingInfrastructure.ProgramSettings), true, true));
                Console.WriteLine("XML -------- output");
                Console.WriteLine(SySal.OperaPersistence.Help(typeof(SySal.OperaDb.ComputingInfrastructure.ProgramSettings), false, true));

                return;
            }
            PersistenceType T = GetType(args[0]);
            PersistenceType Q = GetType(args[1]);
            if (T != Q && !(Q == PersistenceType.TLG && (T == PersistenceType.TLB || T == PersistenceType.TLS)))
            {
                throw new Exception("Input and output persistence supports must be of the same type.");
            }
            switch (T)
            {
            case PersistenceType.TLG:
                if (args[1].ToLower().EndsWith(".bi"))
                {
                    SySal.Scanning.Plate.IO.OPERA.LinkedZone.BaseTrackIndex bi = (SySal.Scanning.Plate.IO.OPERA.LinkedZone.BaseTrackIndex)SySal.OperaPersistence.Restore(args[0], typeof(SySal.Scanning.Plate.IO.OPERA.LinkedZone.BaseTrackIndex));
                    System.IO.StreamWriter wr = new System.IO.StreamWriter(args[1]);
                    wr.Write("Index");
                    foreach (int ix in bi.Ids)
                    {
                        wr.WriteLine();
                        wr.Write(ix);
                    }
                    wr.Flush();
                    wr.Close();
                }
                else if (args[1].ToLower().EndsWith(".ai"))
                {
                    SySal.Scanning.Plate.IO.OPERA.LinkedZone.BaseTrackIgnoreAlignment ai = (SySal.Scanning.Plate.IO.OPERA.LinkedZone.BaseTrackIgnoreAlignment)SySal.OperaPersistence.Restore(args[0], typeof(SySal.Scanning.Plate.IO.OPERA.LinkedZone.BaseTrackIgnoreAlignment));
                    System.IO.StreamWriter wr = new System.IO.StreamWriter(args[1]);
                    wr.Write("Index");
                    foreach (int ix in ai.Ids)
                    {
                        wr.WriteLine();
                        wr.Write(ix);
                    }
                    wr.Flush();
                    wr.Close();
                }
                else if (args[1].ToLower().EndsWith(".dbmi"))
                {
                    SySal.OperaDb.Scanning.DBMIPMicroTrackIndex dbmi = (SySal.OperaDb.Scanning.DBMIPMicroTrackIndex)SySal.OperaPersistence.Restore(args[0], typeof(SySal.OperaDb.Scanning.DBMIPMicroTrackIndex));
                    System.IO.StreamWriter wr = new System.IO.StreamWriter(args[1]);
                    wr.Write("IdZone\tSide\tId");
                    foreach (SySal.OperaDb.TotalScan.DBMIPMicroTrackIndex tx in dbmi.TopTracksIndex)
                    {
                        wr.WriteLine();
                        wr.Write(tx.ZoneId + "\t" + tx.Side + "\t" + tx.Id);
                    }
                    foreach (SySal.OperaDb.TotalScan.DBMIPMicroTrackIndex tx in dbmi.BottomTracksIndex)
                    {
                        wr.WriteLine();
                        wr.Write(tx.ZoneId + "\t" + tx.Side + "\t" + tx.Id);
                    }
                    wr.Flush();
                    wr.Close();
                }
                else
                {
                    SySal.OperaPersistence.LinkedZoneDetailLevel = SySal.OperaDb.Scanning.LinkedZone.DetailLevel.Full;
                    Console.WriteLine(SySal.OperaPersistence.Persist(args[1],
                                                                     (SySal.Scanning.Plate.IO.OPERA.LinkedZone)SySal.OperaPersistence.Restore(args[0],
                                                                                                                                              typeof(SySal.Scanning.Plate.IO.OPERA.LinkedZone))));
                }
                break;

            case PersistenceType.TLB:
                SySal.OperaPersistence.LinkedZoneDetailLevel = SySal.OperaDb.Scanning.LinkedZone.DetailLevel.BaseFull;
                Console.WriteLine(SySal.OperaPersistence.Persist(args[1],
                                                                 (SySal.Scanning.Plate.IO.OPERA.LinkedZone)SySal.OperaPersistence.Restore((args[0].Substring(0, args[0].Length - 1) + 'G'),
                                                                                                                                          typeof(SySal.Scanning.Plate.IO.OPERA.LinkedZone))));
                break;

            case PersistenceType.TLS:
                SySal.OperaPersistence.LinkedZoneDetailLevel = SySal.OperaDb.Scanning.LinkedZone.DetailLevel.BaseGeom;
                Console.WriteLine(SySal.OperaPersistence.Persist(args[1],
                                                                 (SySal.Scanning.Plate.IO.OPERA.LinkedZone)SySal.OperaPersistence.Restore((args[0].Substring(0, args[0].Length - 1) + 'G'),
                                                                                                                                          typeof(SySal.Scanning.Plate.IO.OPERA.LinkedZone))));
                break;

            case PersistenceType.TSR:       Console.WriteLine(SySal.OperaPersistence.Persist(args[1],
                                                                                             (SySal.TotalScan.Volume)SySal.OperaPersistence.Restore(args[0],
                                                                                                                                                    typeof(SySal.TotalScan.Volume))));
                break;

            case PersistenceType.RWC:       Console.WriteLine(SySal.OperaPersistence.Persist(args[1],
                                                                                             (SySal.Scanning.Plate.IO.OPERA.RawData.Catalog)SySal.OperaPersistence.Restore(args[0],
                                                                                                                                                                           typeof(SySal.Scanning.Plate.IO.OPERA.RawData.Catalog))));
                break;

            case PersistenceType.RWD:       Console.WriteLine(SySal.OperaPersistence.Persist(args[1],
                                                                                             (SySal.Scanning.Plate.IO.OPERA.RawData.Fragment)SySal.OperaPersistence.Restore(args[0],
                                                                                                                                                                            typeof(SySal.Scanning.Plate.IO.OPERA.RawData.Fragment))));
                break;

            case PersistenceType.XML:       Console.WriteLine(SySal.OperaPersistence.Persist(args[1],
                                                                                             (SySal.OperaDb.ComputingInfrastructure.ProgramSettings)SySal.OperaPersistence.Restore(args[0],
                                                                                                                                                                                   typeof(SySal.OperaDb.ComputingInfrastructure.ProgramSettings))));
                break;
            }
#if (!(DEBUG))
        }

        catch (Exception x)
        {
            Console.Error.WriteLine(x);
        }
#endif
        }