示例#1
0
        public static string EingabePatternOptimieren(string rohEingabe, bool sternErlaubt)
        {
            if (rohEingabe.Length == 0)
            {
                return("");
            }
            char[]    array     = rohEingabe.ToCharArray();
            ArrayList arrayList = new ArrayList();

            for (int i = 0; i < array.Length; i++)
            {
                if ((array[i] > '@' & array[i] < '[') || (array[i] > '`' & array[i] < '{') || (array[i] > '/' & array[i] < ':') || array[i] == ' ')
                {
                    arrayList.Add(array[i]);
                }
                else if (sternErlaubt && array[i] == '*')
                {
                    arrayList.Add(array[i]);
                }
            }
            char[] array2 = new char[arrayList.Count];
            for (int j = 0; j < arrayList.Count; j++)
            {
                array2[j] = (char)arrayList[j];
            }
            string eingabe = new string(array2);

            eingabe = ToolboxStrings.DoppelteLeerzeichenRaus(eingabe);
            return(eingabe.Trim());
        }
示例#2
0
        public static string EingabePatternOptimieren(string rohEingabe, bool sternErlaubt)
        {
            if (rohEingabe.Length == 0)
            {
                return("");
            }
            char[]    charArray = rohEingabe.ToCharArray();
            ArrayList arrayList = new ArrayList();

            for (int index = 0; index < charArray.Length; ++index)
            {
                if (charArray[index] > '@' & charArray[index] < '[' || charArray[index] > '`' & charArray[index] < '{' || charArray[index] > '/' & charArray[index] < ':' || charArray[index] == ' ')
                {
                    arrayList.Add((object)charArray[index]);
                }
                else if (sternErlaubt && charArray[index] == '*')
                {
                    arrayList.Add((object)charArray[index]);
                }
            }
            char[] chArray = new char[arrayList.Count];
            for (int index = 0; index < arrayList.Count; ++index)
            {
                chArray[index] = (char)arrayList[index];
            }
            return(ToolboxStrings.DoppelteLeerzeichenRaus(new string(chArray)).Trim());
        }
示例#3
0
        private string ErmittleFreienNamenFuerAimlDatei(
            string vorgabe,
            string extension,
            out bool abgebrochen)
        {
            abgebrochen = false;
            bool   flag = false;
            string str1 = "";

            if (string.IsNullOrEmpty(vorgabe))
            {
                vorgabe = ResReader.Reader.GetString("unbenannt");
            }
            do
            {
                string original = InputBox.Show(ResReader.Reader.GetString("NamenFuerNeueAIMLDateiAngeben"), ResReader.Reader.GetString("NeueAIMLDateiErzeugen"), vorgabe, out abgebrochen);
                if (string.IsNullOrEmpty(original))
                {
                    abgebrochen = true;
                }
                if (!abgebrochen)
                {
                    flag = false;
                    string str2 = ToolboxStrings.ReplaceEx(ToolboxStrings.ReplaceEx(ToolboxStrings.ReplaceEx(ToolboxStrings.ReplaceEx(ToolboxStrings.ReplaceEx(ToolboxStrings.ReplaceEx(original, string.Format(".{0}", (object)"aiml"), ""), string.Format(".{0}", (object)"startup"), ""), ".xml", ""), ".", "_"), "\\", "_"), "/", "_").Trim();
                    if (str2 == "")
                    {
                        flag = true;
                    }
                    else
                    {
                        str1 = string.Format("{0}\\{1}.{2}", (object)this._arbeitsVerzeichnis, (object)str2, (object)extension);
                        if (File.Exists(str1))
                        {
                            int num = (int)MessageBox.Show(ResReader.Reader.GetString("AIMLDateiSchonVorhanden"));
                            flag = true;
                        }
                        else
                        {
                            try
                            {
                                ToolboxStrings.String2File("test", str1);
                                File.Delete(str1);
                            }
                            catch (Exception ex)
                            {
                                int num = (int)MessageBox.Show(string.Format(ResReader.Reader.GetString("AIMLDateiNameUngueltigOderKeinZugriff"), (object)ex.Message));
                                flag = true;
                            }
                        }
                    }
                }
            }while (!abgebrochen & flag);
            if (abgebrochen)
            {
                str1 = (string)null;
            }
            return(str1);
        }
示例#4
0
        private string ErsetzungenDurchfuehren(
            List <DictionaryEntry> ersetzungen,
            string rohEingabe,
            bool kreisUbersetzungenVermeiden)
        {
            Hashtable hashtable = (Hashtable)null;

            if (kreisUbersetzungenVermeiden)
            {
                hashtable = new Hashtable();
            }
            if (rohEingabe.Length < 1)
            {
                return("");
            }
            if (ersetzungen.Count < 1)
            {
                return(rohEingabe);
            }
            string original = " " + rohEingabe + " ";

            foreach (DictionaryEntry dictionaryEntry in ersetzungen)
            {
                string key = (string)dictionaryEntry.Key;
                if (!kreisUbersetzungenVermeiden || !hashtable.Contains((object)key.ToLower()))
                {
                    string replacement = (string)dictionaryEntry.Value;
                    if (kreisUbersetzungenVermeiden)
                    {
                        string str = original;
                        original = ToolboxStrings.ReplaceEx(original, key, replacement);
                        if (str != original)
                        {
                            hashtable.Add((object)replacement.ToLower(), (object)null);
                        }
                    }
                    else
                    {
                        original = ToolboxStrings.ReplaceEx(original, key, replacement);
                    }
                }
            }
            return(original.Trim());
        }
示例#5
0
        private string ErsetzungenDurchfuehren(List <DictionaryEntry> ersetzungen, string rohEingabe, bool kreisUbersetzungenVermeiden)
        {
            Hashtable hashtable = null;

            if (kreisUbersetzungenVermeiden)
            {
                hashtable = new Hashtable();
            }
            if (rohEingabe.Length < 1)
            {
                return("");
            }
            if (ersetzungen.Count < 1)
            {
                return(rohEingabe);
            }
            string text = " " + rohEingabe + " ";

            foreach (DictionaryEntry item in ersetzungen)
            {
                string text2 = (string)item.Key;
                if (!kreisUbersetzungenVermeiden || !hashtable.Contains(text2.ToLower()))
                {
                    string text3 = (string)item.Value;
                    if (kreisUbersetzungenVermeiden)
                    {
                        string a = text;
                        text = ToolboxStrings.ReplaceEx(text, text2, text3);
                        if (a != text)
                        {
                            hashtable.Add(text3.ToLower(), null);
                        }
                    }
                    else
                    {
                        text = ToolboxStrings.ReplaceEx(text, text2, text3);
                    }
                }
            }
            return(text.Trim());
        }
示例#6
0
 public void Suchen(string suchEingabe, Arbeitsbereich.WoSuchenOrte woSuchen)
 {
     suchEingabe = ToolboxStrings.UmlauteAussschreiben(suchEingabe);
     this.SucheImArbeitsbereichEvent(suchEingabe, woSuchen);
 }
示例#7
0
 public void Exportieren(
     string exportVerzeichnis,
     Arbeitsbereich.VerzeichnisVorherLeeren verzeichnisVorherLeeren,
     bool alleStarTagsInExtraDateiExportieren,
     bool exportFuerGaitoBotDePublizierung,
     out bool abgebrochen)
 {
     if (!Directory.Exists(exportVerzeichnis))
     {
         throw new ApplicationException(string.Format("Exportverzeichnis '{0}' nicht vorhanden!", (object)exportVerzeichnis));
     }
     if ((uint)verzeichnisVorherLeeren > 0U)
     {
         if (verzeichnisVorherLeeren == Arbeitsbereich.VerzeichnisVorherLeeren.leerenUndVorherFragen && MessageBox.Show(string.Format(ResReader.Reader.GetString("ExportVerzeichnisWirklichLeeren"), (object)exportVerzeichnis), ResReader.Reader.GetString("Export"), MessageBoxButtons.YesNo) != DialogResult.Yes)
         {
             abgebrochen = true;
             return;
         }
         foreach (string directory in Directory.GetDirectories(exportVerzeichnis))
         {
             try
             {
                 Directory.Delete(directory, true);
             }
             catch (Exception ex)
             {
                 int num = (int)MessageBox.Show(string.Format(ml.ml_string(70, "Das Verzeichnis '{0}' konnte nicht gelöscht werden: {1}"), (object)directory, (object)ex.Message));
                 abgebrochen = true;
                 return;
             }
         }
         foreach (string file in Directory.GetFiles(exportVerzeichnis))
         {
             try
             {
                 File.Delete(file);
             }
             catch (Exception ex)
             {
                 int num = (int)MessageBox.Show(string.Format(ml.ml_string(71, "Die Datei '{0}' konnte nicht gelöscht werden: {1}"), (object)file, (object)ex.Message));
                 abgebrochen = true;
                 return;
             }
         }
     }
     if (alleStarTagsInExtraDateiExportieren)
     {
         StringCollection stringCollection = new StringCollection();
         foreach (IArbeitsbereichDatei arbeitsbereichDatei in this.GetZuExportierendeDateien(exportFuerGaitoBotDePublizierung))
         {
             if (arbeitsbereichDatei is AIMLDatei)
             {
                 AIMLDatei aimlDatei1 = (AIMLDatei)arbeitsbereichDatei;
                 AIMLDatei aimlDatei2 = new AIMLDatei(this);
                 aimlDatei2.LiesAusString(aimlDatei1.XML.OuterXml);
                 List <AIMLCategory> aimlCategoryList = new List <AIMLCategory>();
                 foreach (AIMLCategory category in aimlDatei2.RootTopic.Categories)
                 {
                     if (category.That == "" && category.Pattern == "*")
                     {
                         stringCollection.Add(category.Template);
                         aimlCategoryList.Add(category);
                     }
                 }
                 foreach (AIMLCategory category in aimlCategoryList)
                 {
                     aimlDatei2.RootTopic.LoescheCategory(category);
                 }
                 StringBuilder stringBuilder = new StringBuilder();
                 foreach (string str in aimlDatei1.Unterverzeichnisse)
                 {
                     stringBuilder.AppendFormat("{0}_", (object)str);
                 }
                 string str1 = string.Format("{0}\\{1}{2}.aiml", (object)exportVerzeichnis, (object)stringBuilder.ToString(), (object)aimlDatei1.Titel);
                 aimlDatei2.Dateiname = str1;
                 bool cancel = false;
                 aimlDatei2.Save(out cancel);
             }
         }
         if ((uint)stringCollection.Count > 0U)
         {
             StringBuilder stringBuilder = new StringBuilder();
             stringBuilder.Append("<pattern>*</pattern><template><random>");
             foreach (string str in stringCollection)
             {
                 stringBuilder.AppendFormat("<li>{0}</li>", (object)str);
             }
             stringBuilder.Append("</random></template>");
             AIMLDatei aimlDatei = new AIMLDatei(this);
             aimlDatei.LeerFuellen();
             aimlDatei.Dateiname = string.Format("{0}\\_stars_.aiml", (object)exportVerzeichnis);
             aimlDatei.RootTopic.AddNewCategory().ContentNode.InnerXml = stringBuilder.ToString();
             bool cancel = false;
             if (File.Exists(aimlDatei.Dateiname))
             {
                 File.Delete(aimlDatei.Dateiname);
             }
             aimlDatei.Save(out cancel);
         }
         foreach (IArbeitsbereichDatei arbeitsbereichDatei in this.GetZuExportierendeDateien(exportFuerGaitoBotDePublizierung))
         {
             if (arbeitsbereichDatei is StartupDatei)
             {
                 StartupDatei  startupDatei  = (StartupDatei)arbeitsbereichDatei;
                 StringBuilder stringBuilder = new StringBuilder();
                 foreach (string baustein in arbeitsbereichDatei.Unterverzeichnisse)
                 {
                     stringBuilder.AppendFormat("{0}_", (object)this.DateinameBausteinBereinigt(baustein));
                 }
                 string str1      = "startup";
                 string str2      = string.Format("{0}\\{1}{2}.{3}", (object)exportVerzeichnis, (object)stringBuilder.ToString(), (object)this.DateinameBausteinBereinigt(startupDatei.Titel), (object)str1);
                 string dateiname = startupDatei.Dateiname;
                 if (string.IsNullOrEmpty(dateiname))
                 {
                     ToolboxStrings.String2File(startupDatei.XML.OuterXml, str2);
                 }
                 else
                 {
                     File.Copy(dateiname, str2, true);
                 }
             }
         }
     }
     else
     {
         foreach (IArbeitsbereichDatei arbeitsbereichDatei in this.GetZuExportierendeDateien(exportFuerGaitoBotDePublizierung))
         {
             StringBuilder stringBuilder = new StringBuilder();
             foreach (string baustein in arbeitsbereichDatei.Unterverzeichnisse)
             {
                 stringBuilder.AppendFormat("{0}_", (object)this.DateinameBausteinBereinigt(baustein));
             }
             string str1;
             if (arbeitsbereichDatei is AIMLDatei)
             {
                 str1 = "aiml";
             }
             else
             {
                 if (!(arbeitsbereichDatei is StartupDatei))
                 {
                     throw new ApplicationException(string.Format("Datei '{0}' hat einen unbekannten Typ", (object)arbeitsbereichDatei.Titel));
                 }
                 str1 = "startup";
             }
             string str2      = string.Format("{0}\\{1}{2}.{3}", (object)exportVerzeichnis, (object)stringBuilder.ToString(), (object)this.DateinameBausteinBereinigt(arbeitsbereichDatei.Titel), (object)str1);
             string dateiname = arbeitsbereichDatei.Dateiname;
             if (string.IsNullOrEmpty(dateiname))
             {
                 ToolboxStrings.String2File(arbeitsbereichDatei.XML.OuterXml, str2);
             }
             else
             {
                 File.Copy(dateiname, str2, true);
             }
         }
     }
     abgebrochen = false;
 }
示例#8
0
        public void Publizieren()
        {
            this.Ergebnis           = ArbeitsbereichPublizieren.ergebnisse.erfolgreich;
            this._ergebnisProtokoll = new StringBuilder();
            this.Protkolliere(GaitoBotEditorCore.ResReader.Reader.GetString("PublizierungGestartet"));
            if (!this._arbeitsbereich.SindAlleZuExportierendenDateienFehlerFrei)
            {
                this.ZeigeFehler(GaitoBotEditorCore.ResReader.Reader.GetString("PublizierenNichtAlleAIMLDateienKorrekt"), "Publizieren:Checking AIML-Files");
                this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.fehlerhaft;
            }
            else
            {
                string gaitoBotEditorID = this._arbeitsbereich.GaitoBotID;
                if (gaitoBotEditorID != null)
                {
                    gaitoBotEditorID = gaitoBotEditorID.Trim();
                }
                if (string.IsNullOrEmpty(gaitoBotEditorID))
                {
                    this.ZeigeFehler(GaitoBotEditorCore.ResReader.Reader.GetString("KeineGaitoBotIDEingegeben"), "Publizieren:Checking GaitoBotID");
                    this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.fehlerhaft;
                }
                else
                {
                    bool flag;
                    try
                    {
                        flag = PublizierDienst.ExistsGaitoBotID(this._arbeitsbereich.GaitoBotID);
                    }
                    catch (Exception ex)
                    {
                        this.ZeigeFehler(string.Format(GaitoBotEditorCore.ResReader.Reader.GetString("FehlerBeiGaitoBotWebServiceZugriff"), (object)ex.Message), nameof(Publizieren));
                        this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.fehlerhaft;
                        goto label_33;
                    }
                    if (flag)
                    {
                        this.Protkolliere(GaitoBotEditorCore.ResReader.Reader.GetString("GaitotbotIDExistiert"));
                        this.Protkolliere(GaitoBotEditorCore.ResReader.Reader.GetString("AIMLDateienWerdenExportiert"));
                        bool abgebrochen = false;
                        this._arbeitsbereich.Exportieren(this.ExportVerzeichnis, Arbeitsbereich.VerzeichnisVorherLeeren.leerenUndNichtVorherFragen, true, true, out abgebrochen);
                        if (abgebrochen)
                        {
                            this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.fehlerhaft;
                        }
                        else
                        {
                            long num1 = (long)(int)(this.GroesseExportInByte / 1024L);
                            this.Protkolliere(string.Format(GaitoBotEditorCore.ResReader.Reader.GetString("AIMLExportGroesseLautetKB"), (object)num1));
                            long num2 = PublizierDienst.MaxKBWissen(this._arbeitsbereich.GaitoBotID);
                            this.Protkolliere(string.Format(GaitoBotEditorCore.ResReader.Reader.GetString("AIMLExportGroesseErlaubtKB"), (object)num2));
                            if (num1 > num2)
                            {
                                this.ZeigeFehler(GaitoBotEditorCore.ResReader.Reader.GetString("AIMLExportZuGrossFuerPublizieren"), "Publizieren:Checking export size");
                                this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.fehlerhaft;
                            }
                            else
                            {
                                this.Protkolliere(GaitoBotEditorCore.ResReader.Reader.GetString("LoescheAlteAIMLDateienRemote"));
                                List <DateiPublizierungsInfos> source1 = new List <DateiPublizierungsInfos>();
                                foreach (string file in Directory.GetFiles(this.ExportVerzeichnis, "*.*"))
                                {
                                    DateiPublizierungsInfos publizierungsInfos1 = new DateiPublizierungsInfos();
                                    publizierungsInfos1.SetzeWerte(file);
                                    DateiPublizierungsInfos publizierungsInfos2 = new DateiPublizierungsInfos()
                                    {
                                        CRC32Checksumme = publizierungsInfos1.CRC32Checksumme, Dateiname = publizierungsInfos1.Dateiname, Groesse = publizierungsInfos1.Groesse, GesamtCheckString = publizierungsInfos1.GesamtCheckString
                                    };
                                    source1.Add(publizierungsInfos2);
                                }
                                string[] toDoDateinamen = (string[])null;
                                try
                                {
                                    toDoDateinamen = PublizierDienst.AlteOderGeloeschteDateienLoeschenUndHochzuladendeZurueckGeben(this._arbeitsbereich.GaitoBotID, source1.ToArray());
                                }
                                catch (Exception ex)
                                {
                                    this.ZeigeFehler(string.Format(GaitoBotEditorCore.ResReader.Reader.GetString("FehlerBeimRemoteLoeschen"), (object)ex.Message), "Publizieren:deleting old remote files");
                                    this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.fehlerhaft;
                                    goto label_33;
                                }
                                IEnumerable <DateiPublizierungsInfos> source2 = source1.Where <DateiPublizierungsInfos>((Func <DateiPublizierungsInfos, bool>)(toDo => ((IEnumerable <string>)toDoDateinamen).Contains <string>(toDo.Dateiname)));
                                this.Protkolliere(string.Format(GaitoBotEditorCore.ResReader.Reader.GetString("AnzahlDateienZuPublizieren"), (object)source2.Count <DateiPublizierungsInfos>()));
                                foreach (DateiPublizierungsInfos publizierungsInfos in source2)
                                {
                                    try
                                    {
                                        this.Protkolliere(string.Format(GaitoBotEditorCore.ResReader.Reader.GetString("PubliziereDatei"), (object)publizierungsInfos.Dateiname));
                                        AIMLDateiUebertragung aimlDateiInhalt = new AIMLDateiUebertragung()
                                        {
                                            CheckString = publizierungsInfos.GesamtCheckString, Dateiname = publizierungsInfos.Dateiname, Inhalt = ToolboxStrings.File2String(Path.Combine(this.ExportVerzeichnis, publizierungsInfos.Dateiname))
                                        };
                                        PublizierDienst.UebertrageAIMLDatei(gaitoBotEditorID, aimlDateiInhalt);
                                    }
                                    catch (Exception ex)
                                    {
                                        this.ZeigeFehler(string.Format(GaitoBotEditorCore.ResReader.Reader.GetString("FehlerBeimDateiPublizieren"), (object)publizierungsInfos.Dateiname, (object)ex.Message), "Publizieren:transfering file");
                                        this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.fehlerhaft;
                                    }
                                }
                                try
                                {
                                    this.Protkolliere("Resete GaitoBot auf Server");
                                    PublizierDienst.ReseteGaitoBot(gaitoBotEditorID);
                                }
                                catch (Exception ex)
                                {
                                    this.ZeigeFehler(string.Format(GaitoBotEditorCore.ResReader.Reader.GetString("FehlerBeimDateiPublizieren"), (object)"", (object)ex.Message), "Publizieren:reseting gaitobot on server");
                                    this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.fehlerhaft;
                                }
                            }
                        }
                    }
                    else
                    {
                        this.ZeigeFehler(GaitoBotEditorCore.ResReader.Reader.GetString("GaitotbotIDExistiertNicht"), "Publizieren:Checking GaitoBotID");
                        this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.fehlerhaft;
                    }
                }
            }
label_33:
            this.TempverzeichnisWiederLoeschen();
            switch (this.Ergebnis)
            {
            case ArbeitsbereichPublizieren.ergebnisse.erfolgreich:
                this.Protkolliere(GaitoBotEditorCore.ResReader.Reader.GetString("PublizierungErfolgreich"));
                break;

            case ArbeitsbereichPublizieren.ergebnisse.fehlerhaft:
                this.Protkolliere(GaitoBotEditorCore.ResReader.Reader.GetString("PublizierungFehlerhaft"));
                break;

            default:
                throw new ApplicationException("Unbehandeltes Publizierungsergebnis: " + (object)this.Ergebnis);
            }
            this.Ergebnis = ArbeitsbereichPublizieren.ergebnisse.erfolgreich;
        }
示例#9
0
        public void Publizieren()
        {
            this.Ergebnis           = ergebnisse.erfolgreich;
            this._ergebnisProtokoll = new StringBuilder();
            this.Protkolliere(ResReader.Reader.GetString("PublizierungGestartet"));
            if (!this._arbeitsbereich.SindAlleZuExportierendenDateienFehlerFrei)
            {
                this.ZeigeFehler(ResReader.Reader.GetString("PublizierenNichtAlleAIMLDateienKorrekt"), "Publizieren:Checking AIML-Files");
                this.Ergebnis = ergebnisse.fehlerhaft;
            }
            else
            {
                string text = this._arbeitsbereich.GaitoBotID;
                if (text != null)
                {
                    text = text.Trim();
                }
                if (string.IsNullOrEmpty(text))
                {
                    this.ZeigeFehler(ResReader.Reader.GetString("KeineGaitoBotIDEingegeben"), "Publizieren:Checking GaitoBotID");
                    this.Ergebnis = ergebnisse.fehlerhaft;
                }
                else
                {
                    bool flag = false;
                    try
                    {
                        flag = PublizierDienst.ExistsGaitoBotID(this._arbeitsbereich.GaitoBotID);
                    }
                    catch (Exception ex)
                    {
                        this.ZeigeFehler(string.Format(ResReader.Reader.GetString("FehlerBeiGaitoBotWebServiceZugriff"), ex.Message), "Publizieren");
                        this.Ergebnis = ergebnisse.fehlerhaft;
                        goto IL_04ab;
                    }
                    if (flag)
                    {
                        this.Protkolliere(ResReader.Reader.GetString("GaitotbotIDExistiert"));
                        this.Protkolliere(ResReader.Reader.GetString("AIMLDateienWerdenExportiert"));
                        bool flag2 = false;
                        this._arbeitsbereich.Exportieren(this.ExportVerzeichnis, Arbeitsbereich.VerzeichnisVorherLeeren.leerenUndNichtVorherFragen, true, true, out flag2);
                        if (flag2)
                        {
                            this.Ergebnis = ergebnisse.fehlerhaft;
                        }
                        else
                        {
                            long num = (int)(this.GroesseExportInByte / 1024);
                            this.Protkolliere(string.Format(ResReader.Reader.GetString("AIMLExportGroesseLautetKB"), num));
                            long num2 = PublizierDienst.MaxKBWissen(this._arbeitsbereich.GaitoBotID);
                            this.Protkolliere(string.Format(ResReader.Reader.GetString("AIMLExportGroesseErlaubtKB"), num2));
                            if (num > num2)
                            {
                                this.ZeigeFehler(ResReader.Reader.GetString("AIMLExportZuGrossFuerPublizieren"), "Publizieren:Checking export size");
                                this.Ergebnis = ergebnisse.fehlerhaft;
                            }
                            else
                            {
                                this.Protkolliere(ResReader.Reader.GetString("LoescheAlteAIMLDateienRemote"));
                                List <DateiPublizierungsInfos> list = new List <DateiPublizierungsInfos>();
                                string[] files = Directory.GetFiles(this.ExportVerzeichnis, "*.*");
                                foreach (string dateinameMitPfad in files)
                                {
                                    DateiPublizierungsInfos dateiPublizierungsInfos = new DateiPublizierungsInfos();
                                    dateiPublizierungsInfos.SetzeWerte(dateinameMitPfad);
                                    DateiPublizierungsInfos item = new DateiPublizierungsInfos
                                    {
                                        CRC32Checksumme   = dateiPublizierungsInfos.CRC32Checksumme,
                                        Dateiname         = dateiPublizierungsInfos.Dateiname,
                                        Groesse           = dateiPublizierungsInfos.Groesse,
                                        GesamtCheckString = dateiPublizierungsInfos.GesamtCheckString
                                    };
                                    list.Add(item);
                                }
                                string[] toDoDateinamen = null;
                                try
                                {
                                    toDoDateinamen = PublizierDienst.AlteOderGeloeschteDateienLoeschenUndHochzuladendeZurueckGeben(this._arbeitsbereich.GaitoBotID, list.ToArray());
                                }
                                catch (Exception ex2)
                                {
                                    this.ZeigeFehler(string.Format(ResReader.Reader.GetString("FehlerBeimRemoteLoeschen"), ex2.Message), "Publizieren:deleting old remote files");
                                    this.Ergebnis = ergebnisse.fehlerhaft;
                                    goto IL_04ab;
                                }
                                IEnumerable <DateiPublizierungsInfos> enumerable = from toDo in list
                                                                                   where toDoDateinamen.Contains(toDo.Dateiname)
                                                                                   select toDo;
                                this.Protkolliere(string.Format(ResReader.Reader.GetString("AnzahlDateienZuPublizieren"), enumerable.Count()));
                                foreach (DateiPublizierungsInfos item2 in enumerable)
                                {
                                    try
                                    {
                                        this.Protkolliere(string.Format(ResReader.Reader.GetString("PubliziereDatei"), item2.Dateiname));
                                        AIMLDateiUebertragung aimlDateiInhalt = new AIMLDateiUebertragung
                                        {
                                            CheckString = item2.GesamtCheckString,
                                            Dateiname   = item2.Dateiname,
                                            Inhalt      = ToolboxStrings.File2String(Path.Combine(this.ExportVerzeichnis, item2.Dateiname))
                                        };
                                        PublizierDienst.UebertrageAIMLDatei(text, aimlDateiInhalt);
                                    }
                                    catch (Exception ex3)
                                    {
                                        this.ZeigeFehler(string.Format(ResReader.Reader.GetString("FehlerBeimDateiPublizieren"), item2.Dateiname, ex3.Message), "Publizieren:transfering file");
                                        this.Ergebnis = ergebnisse.fehlerhaft;
                                    }
                                }
                                try
                                {
                                    this.Protkolliere("Resete GaitoBot auf Server");
                                    PublizierDienst.ReseteGaitoBot(text);
                                }
                                catch (Exception ex4)
                                {
                                    this.ZeigeFehler(string.Format(ResReader.Reader.GetString("FehlerBeimDateiPublizieren"), "", ex4.Message), "Publizieren:reseting gaitobot on server");
                                    this.Ergebnis = ergebnisse.fehlerhaft;
                                }
                            }
                        }
                    }
                    else
                    {
                        this.ZeigeFehler(ResReader.Reader.GetString("GaitotbotIDExistiertNicht"), "Publizieren:Checking GaitoBotID");
                        this.Ergebnis = ergebnisse.fehlerhaft;
                    }
                }
            }
            goto IL_04ab;
IL_04ab:
            this.TempverzeichnisWiederLoeschen();
            switch (this.Ergebnis)
            {
            case ergebnisse.erfolgreich:
                this.Protkolliere(ResReader.Reader.GetString("PublizierungErfolgreich"));
                break;

            case ergebnisse.fehlerhaft:
                this.Protkolliere(ResReader.Reader.GetString("PublizierungFehlerhaft"));
                break;

            default:
                throw new ApplicationException("Unbehandeltes Publizierungsergebnis: " + this.Ergebnis);
            }
            this.Ergebnis = ergebnisse.erfolgreich;
        }
        public void Exportieren(string exportVerzeichnis, VerzeichnisVorherLeeren verzeichnisVorherLeeren, bool alleStarTagsInExtraDateiExportieren, bool exportFuerGaitoBotDePublizierung, out bool abgebrochen)
        {
            if (!Directory.Exists(exportVerzeichnis))
            {
                throw new ApplicationException(string.Format("Exportverzeichnis '{0}' nicht vorhanden!", exportVerzeichnis));
            }
            switch (verzeichnisVorherLeeren)
            {
            case VerzeichnisVorherLeeren.leerenUndVorherFragen:
            {
                DialogResult dialogResult = MessageBox.Show(string.Format(ResReader.Reader.GetString("ExportVerzeichnisWirklichLeeren"), exportVerzeichnis), ResReader.Reader.GetString("Export"), MessageBoxButtons.YesNo);
                if (dialogResult != DialogResult.Yes)
                {
                    abgebrochen = true;
                    return;
                }
                goto default;
            }

            default:
            {
                string[] directories = Directory.GetDirectories(exportVerzeichnis);
                string[] array       = directories;
                foreach (string text in array)
                {
                    try
                    {
                        Directory.Delete(text, true);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(string.Format(global::MultiLang.ml.ml_string(70, "Das Verzeichnis '{0}' konnte nicht gelöscht werden: {1}"), text, ex.Message));
                        abgebrochen = true;
                        return;
                    }
                }
                string[] files  = Directory.GetFiles(exportVerzeichnis);
                string[] array2 = files;
                foreach (string text2 in array2)
                {
                    try
                    {
                        File.Delete(text2);
                    }
                    catch (Exception ex2)
                    {
                        MessageBox.Show(string.Format(global::MultiLang.ml.ml_string(71, "Die Datei '{0}' konnte nicht gelöscht werden: {1}"), text2, ex2.Message));
                        abgebrochen = true;
                        return;
                    }
                }
                break;
            }

            case VerzeichnisVorherLeeren.nichtLeeren:
                break;
            }
            if (alleStarTagsInExtraDateiExportieren)
            {
                StringCollection stringCollection = new StringCollection();
                foreach (IArbeitsbereichDatei item in this.GetZuExportierendeDateien(exportFuerGaitoBotDePublizierung))
                {
                    if (item is AIMLDatei)
                    {
                        AIMLDatei aIMLDatei  = (AIMLDatei)item;
                        AIMLDatei aIMLDatei2 = new AIMLDatei(this);
                        aIMLDatei2.LiesAusString(aIMLDatei.XML.OuterXml);
                        List <AIMLCategory> list = new List <AIMLCategory>();
                        foreach (AIMLCategory category in aIMLDatei2.RootTopic.Categories)
                        {
                            if (category.That == "" && category.Pattern == "*")
                            {
                                stringCollection.Add(category.Template);
                                list.Add(category);
                            }
                        }
                        foreach (AIMLCategory item2 in list)
                        {
                            aIMLDatei2.RootTopic.LoescheCategory(item2);
                        }
                        StringBuilder stringBuilder      = new StringBuilder();
                        string[]      unterverzeichnisse = aIMLDatei.Unterverzeichnisse;
                        foreach (string arg in unterverzeichnisse)
                        {
                            stringBuilder.AppendFormat("{0}_", arg);
                        }
                        string text4 = aIMLDatei2.Dateiname = string.Format("{0}\\{1}{2}.aiml", exportVerzeichnis, stringBuilder.ToString(), aIMLDatei.Titel);
                        bool   flag  = false;
                        aIMLDatei2.Save(out flag);
                    }
                }
                if (stringCollection.Count != 0)
                {
                    StringBuilder stringBuilder2 = new StringBuilder();
                    stringBuilder2.Append("<pattern>*</pattern><template><random>");
                    StringEnumerator enumerator4 = stringCollection.GetEnumerator();
                    try
                    {
                        while (enumerator4.MoveNext())
                        {
                            string current4 = enumerator4.Current;
                            stringBuilder2.AppendFormat("<li>{0}</li>", current4);
                        }
                    }
                    finally
                    {
                        IDisposable disposable = enumerator4 as IDisposable;
                        if (disposable != null)
                        {
                            disposable.Dispose();
                        }
                    }
                    stringBuilder2.Append("</random></template>");
                    AIMLDatei aIMLDatei3 = new AIMLDatei(this);
                    aIMLDatei3.LeerFuellen();
                    aIMLDatei3.Dateiname = string.Format("{0}\\_stars_.aiml", exportVerzeichnis);
                    AIMLCategory aIMLCategory = aIMLDatei3.RootTopic.AddNewCategory();
                    aIMLCategory.ContentNode.InnerXml = stringBuilder2.ToString();
                    bool flag2 = false;
                    if (File.Exists(aIMLDatei3.Dateiname))
                    {
                        File.Delete(aIMLDatei3.Dateiname);
                    }
                    aIMLDatei3.Save(out flag2);
                }
                foreach (IArbeitsbereichDatei item3 in this.GetZuExportierendeDateien(exportFuerGaitoBotDePublizierung))
                {
                    if (item3 is StartupDatei)
                    {
                        StartupDatei  startupDatei        = (StartupDatei)item3;
                        StringBuilder stringBuilder3      = new StringBuilder();
                        string[]      unterverzeichnisse2 = item3.Unterverzeichnisse;
                        foreach (string baustein in unterverzeichnisse2)
                        {
                            stringBuilder3.AppendFormat("{0}_", this.DateinameBausteinBereinigt(baustein));
                        }
                        string text5     = "startup";
                        string text6     = string.Format("{0}\\{1}{2}.{3}", exportVerzeichnis, stringBuilder3.ToString(), this.DateinameBausteinBereinigt(startupDatei.Titel), text5);
                        string dateiname = startupDatei.Dateiname;
                        if (string.IsNullOrEmpty(dateiname))
                        {
                            ToolboxStrings.String2File(startupDatei.XML.OuterXml, text6);
                        }
                        else
                        {
                            File.Copy(dateiname, text6, true);
                        }
                    }
                }
            }
            else
            {
                foreach (IArbeitsbereichDatei item4 in this.GetZuExportierendeDateien(exportFuerGaitoBotDePublizierung))
                {
                    StringBuilder stringBuilder4      = new StringBuilder();
                    string[]      unterverzeichnisse3 = item4.Unterverzeichnisse;
                    foreach (string baustein2 in unterverzeichnisse3)
                    {
                        stringBuilder4.AppendFormat("{0}_", this.DateinameBausteinBereinigt(baustein2));
                    }
                    string text7 = "";
                    if (item4 is AIMLDatei)
                    {
                        text7 = "aiml";
                        goto IL_05c3;
                    }
                    if (item4 is StartupDatei)
                    {
                        text7 = "startup";
                        goto IL_05c3;
                    }
                    throw new ApplicationException(string.Format("Datei '{0}' hat einen unbekannten Typ", item4.Titel));
IL_05c3:
                    string text8 = string.Format("{0}\\{1}{2}.{3}", exportVerzeichnis, stringBuilder4.ToString(), this.DateinameBausteinBereinigt(item4.Titel), text7);
                    string dateiname2 = item4.Dateiname;
                    if (string.IsNullOrEmpty(dateiname2))
                    {
                        ToolboxStrings.String2File(item4.XML.OuterXml, text8);
                    }
                    else
                    {
                        File.Copy(dateiname2, text8, true);
                    }
                }
            }
            abgebrochen = false;
        }