/// <summary> /// Returns the offset of the starting of the /// previous paragraph /// </summary> /// <returns>the offset, -1 on error</returns> private int getStartOfPrevPara() { if (WordApp == null) { return(-1); } int caretPos = getCaretPos(); int paraStart = WordApp.Selection.Range.Paragraphs[1].Range.Start; Log.Debug("caretPos: " + caretPos + ", paraStart = " + paraStart); if (caretPos != paraStart) { return(paraStart); } Word.Paragraph para = WordApp.Selection.Range.Paragraphs[1]; int start = para.Range.Start; int prevStart = start; bool flag = false; int iteration = 0; bool breakOnFirst = false; while (true) { Word.Paragraph prev = para.Previous(); if (prev == null) { break; } start = prev.Range.Start; Log.Debug("start: " + start + ", prevStart: " + prevStart); if (prevStart - start == 1) { if (iteration == 0) { breakOnFirst = true; } } else if (prevStart - start > 1) { if (breakOnFirst || flag) { return(start); } flag = true; } para = prev; prevStart = start; iteration++; } return(-1); }
/* private String dajWymaganiaXXXStaraPrezentacja(Package wymPckg,String warunekIF,String warunekIF2) * { * String w = ""; * Wordy.Table tab = word.wstawTabele("Rozdzial1b", new string[] { "Nazwa", "Opis realizacji", "Nadrzędne wygmaganie biznesowe" }); * tab.Columns[1].SetWidth(150f, Wordy.WdRulerStyle.wdAdjustNone); * tab.Columns[2].SetWidth(200f, Wordy.WdRulerStyle.wdAdjustNone); * tab.Columns[3].SetWidth(150f, Wordy.WdRulerStyle.wdAdjustNone); * w += "<table><tr><th>Nazwa</th><th>Opis realizacji</th><th>Nadrzędne wygmaganie biznesowe</th></tr>\n"; * int i = 1; * foreach (Element elem in wymPckg.Elements) * { * String typ = "konfiguracja/development"; * String nadrzedne = ""; * if (elem.Stereotype != warunekIF && elem.Stereotype != warunekIF2) continue; * foreach (Connector con in elem.Connectors) * { * * if (con.Type == "Realisation") * { * Element e2 = Repo.GetElementByID(con.SupplierID); * if (e2.Type == "Requirement") * { * nadrzedne += e2.Name + "<br>\n"; * } * } * } * w += "<tr><td>" + elem.Name + "</td><td>" + elem.Notes + "</td><td>" + nadrzedne + "</td></tr>\n"; * word.wstawWierszDoTabeli("", tab, i + 1, new string[] { elem.Name, elem.Notes, nadrzedne }); * i++; * } * return w; * }*/ private String dajWymaganiaXXXNowaPrezentacja3(Package wymPckg, String [] stereotypy, bool systemowe = false) { String w = ""; w += "<table><tr><th>Nazwa</th><th>Opis realizacji</th><th>Nadrzędne wygmaganie biznesowe</th></tr>\n"; Stopwatch st = new Stopwatch(); st.Start(); foreach (Element elem in wymPckg.Elements) { st.Restart(); // String typ = "konfiguracja/development"; String nadrzedne = ""; String stat = ""; bool analiza = false; // Element e2 = null; /// bo ficzery systemowe to pozostałe if (systemowe) { if (CmodelKonfigurator.czyZawiera(elem.Stereotype, stereotypy)) { continue; } } else { if (!CmodelKonfigurator.czyZawiera(elem.Stereotype, stereotypy)) { continue; } } okno.Log(Statystyki.LogMsgType.Info, "--Wymaganie: " + elem.Name + "\n "); okno.Log(Statystyki.LogMsgType.cd, "----- czy=" + st.Elapsed.ToString("hh\\:mm\\:ss\\.fff")); String sql = "select ore.object_id from t_object ore,t_object ofi, t_connector c where ofi.object_id=" + elem.ElementID + " and " + "((c.start_object_id=ofi.object_id and c.end_object_id=ore.object_id) or " + "(c.start_object_id=ore.object_id and c.end_object_id=ofi.object_id)) and " + " ore.object_type='Requirement' and c.connector_type='Realisation'"; int ile_req = 0; foreach (Element e2 in modelProjektu.Repozytorium.GetElementSet(sql, 2)) { ile_req++; nadrzedne += e2.Name + "\n"; stat += e2.Status + "\n"; if (!CmodelKonfigurator.czyZawiera(e2.Status, CmodelKonfigurator.statusyBRqGotowe)) { analiza = true; } } okno.Log(Statystyki.LogMsgType.cd, ", req=" + st.Elapsed.ToString("hh\\:mm\\:ss\\.fff")); /* przejscie na sql * foreach (Connector con in elem.Connectors) * { * * if (con.Type == "Realisation") * { * e2 = modelProjektu.Repozytorium.GetElementByID(con.SupplierID); * * if (e2.Type == "Requirement") * { * nadrzedne += e2.Name + "\n"; * stat += e2.Status + "\n"; * * if (!CmodelKonfigurator.czyZawiera(e2.Status, CmodelKonfigurator.statusyBRqGotowe)) * { * analiza = true; * } * } * } * } * */ Wordy.Paragraph paragr = word.wstawParagraf(elem.Name, 0); okno.Log(Statystyki.LogMsgType.cd, ", name=" + st.Elapsed.ToString("hh\\:mm\\:ss\\.fff")); paragr = paragr.Previous(); paragr.Range.Bold = 1; paragr.Range.Underline = Wordy.WdUnderline.wdUnderlineThick; paragr = word.wstawParagraf("Status: " + elem.Status, 0); paragr = paragr.Previous(); Wordy.Range r = paragr.Range; r.End = r.Start + 7; r.Bold = 1; okno.Log(Statystyki.LogMsgType.cd, ", status=" + st.Elapsed.ToString("hh\\:mm\\:ss\\.fff")); //if (elem.Status != "Uzgodnione" && elem.Status != "Anulowane przez IT" && elem.Status != "Anulowane przez BO") if (!CmodelKonfigurator.czyZawiera(elem.Status, CmodelKonfigurator.statusyFeatureGotowe)) { paragr.Range.Comments.Add(paragr.Range, CmodelKonfigurator.worning["SRQanalysis"]); } if (jezykPolski) { paragr = word.wstawParagraf("Nadrzędne wymaganie biznesowe:", 0); } else { paragr = word.wstawParagraf("Parent business requirement:", 0); } paragr = paragr.Previous(); paragr.Range.Bold = 1; okno.Log(Statystyki.LogMsgType.cd, ", nadrzedne=" + st.Elapsed.ToString("hh\\:mm\\:ss\\.fff")); if (ile_req == 0) { if (jezykPolski) { paragr = word.wstawParagraf("Brak", 0); } else { paragr = word.wstawParagraf("None", 0); } } else { word.wstawParagraf(nadrzedne, 0); paragr = paragr.Previous(); paragr = paragr.Previous(); r = paragr.Range; r.End = r.Start + 29; r.Select(); r.Bold = 1; if (analiza) { paragr.Range.Comments.Add(paragr.Range, CmodelKonfigurator.worning["BRQ_SRQanalysis"]); } } okno.Log(Statystyki.LogMsgType.cd, " nadrzTresc=" + st.Elapsed.ToString("hh\\:mm\\:ss\\.fff")); if (jezykPolski) { paragr = word.wstawParagraf("Szczegóły:", 0); } else { paragr = word.wstawParagraf("Details:", 0); } paragr = paragr.Previous(); paragr.Range.Bold = 1; // word.wstawParagraf(elem.Notes, 0); word.wstawNotatkeEAtoRTF(modelProjektu.Repozytorium, elem); // word.wstawWierszDoTabeli("", tab, i, new string[] { elem.Notes}); //tab.Cell(i, 1).Merge(tab.Cell(i, 2)); word.wstawZalacznikRTF(elem); okno.Log(Statystyki.LogMsgType.cd, " opis=" + st.Elapsed.ToString("hh\\:mm\\:ss\\.fff")); if (elem.Notes == "" && elem.GetLinkedDocument() == "") { word.wstawParagraf("Wymaganie w trakcie analizy...", 0, "Brak opisu realizacji wymagania"); } word.wstawParagraf("", 0); okno.Log(Statystyki.LogMsgType.cd, " koniec=" + st.Elapsed.ToString("hh\\:mm\\:ss\\.fff") + "\n"); } return(w); }