Added new settings to control conversion of approved data

Added event handler for viewing version pdfs and summary reports
added constructor to lookup based on file
added method to get library document by original file name
fixed ConvertToDisplayText to support RO tables in approved folder
added vlnTreeViewPdfEvent delegate
added vlnTreeViewPdfArgs class
added ViewPDF event
only display menu item if pdf or summary pdf exists
determined if pdf should have superceded watermark added
added sorting of consistency check report by procedure number
added method to add superceded watermark to old version pdf files
commented out approved folders
This commit is contained in:
Rich 2012-02-09 16:14:36 +00:00
parent 11ba8ffa78
commit 0b48ec643e
10 changed files with 250 additions and 32 deletions

View File

@ -310,5 +310,29 @@ namespace DataLoader.Properties {
this["GenMacFolder"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool LoadApproved {
get {
return ((bool)(this["LoadApproved"]));
}
set {
this["LoadApproved"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Phase4")]
public string Phase4 {
get {
return ((string)(this["Phase4"]));
}
set {
this["Phase4"] = value;
}
}
}
}

View File

@ -74,5 +74,11 @@
<Setting Name="GenMacFolder" Type="System.String" Scope="User">
<Value Profile="(Default)">c:\development\genmacall</Value>
</Setting>
<Setting Name="LoadApproved" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="Phase4" Type="System.String" Scope="User">
<Value Profile="(Default)">Phase4</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -18,6 +18,7 @@ using VEPROMS.Properties;
using Volian.Controls.Library;
using DescriptiveEnum;
using Volian.Base.Library;
using Volian.Print.Library;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
@ -209,6 +210,20 @@ namespace VEPROMS
tv.ApproveAllProcedures += new vlnTreeViewEvent(tv_ApproveAllProcedures);
tv.ApproveSomeProcedures += new vlnTreeViewEvent(tv_ApproveSomeProcedures);
tv.ReportAllProceduresInconsistencies += new vlnTreeViewEvent(tv_ReportAllProceduresInconsistencies);
tv.ViewPDF += new vlnTreeViewPdfEvent(tv_ViewPDF);
}
void tv_ViewPDF(object sender, vlnTreeViewPdfArgs args)
{
byte[] buffer;
if (args.MyWatermark != string.Empty)
buffer = PromsPrinter.WatermarkPDF(args.MyBuffer, args.MyWatermark);
else
buffer = args.MyBuffer;
FileStream fs = new FileStream(args.MyFilename, FileMode.Create);
fs.Write(buffer, 0, buffer.Length);
fs.Close();
System.Diagnostics.Process.Start(args.MyFilename);
}
void displayHistory_AnnotationRestored(AnnotationInfo restoredAnnotationInfo, ItemInfo currentItem)

View File

@ -4,6 +4,7 @@ using System.Collections.Specialized;
using System.Text;
using System.ComponentModel;
using System.Text.RegularExpressions;
using System.IO;
namespace VEPROMS.CSLA.Library
{
@ -110,6 +111,18 @@ namespace VEPROMS.CSLA.Library
_DocVersionInfo = _ROFstInfo.docVer==null?null: DocVersionInfo.Get(_ROFstInfo.docVer.VersionID);
ParseIntoDictionary(rofstinfo.ROLookup);
}
public ROFSTLookup(string filePath)
{
_ROFstInfo = null;
_ROFst = null;
_DocVersionInfo = null;
FileInfo rofstFile = new FileInfo(filePath);
FileStream fs = rofstFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
byte[] buf = new byte[rofstFile.Length];
fs.Read(buf, 0, buf.Length);
fs.Close();
ParseIntoDictionary(buf);
}
#endregion
#region PropertiesAndData
public roHdr myHdr;

View File

@ -130,6 +130,64 @@ namespace VEPROMS.CSLA.Library
_DocumentConfig = null;
}
#endregion
public static DocumentInfo GetByLibDocName(string libdoc, int versionID)
{
try
{
DocumentInfo tmp = DataPortal.Fetch<DocumentInfo>(new LibDocCriteria(libdoc, versionID));
return tmp;
}
catch (Exception ex)
{
throw new DbCslaException("Error on DocumentInfo.GetByLibDocName", ex);
}
}
[Serializable()]
protected class LibDocCriteria
{
private string _LibDoc;
public string LibDoc
{ get { return _LibDoc; } }
private int _VersionID;
public int VersionID
{ get { return _VersionID; } }
public LibDocCriteria(string libdoc, int versionid)
{
_LibDoc = libdoc;
_VersionID = versionid;
}
}
private void DataPortal_Fetch(LibDocCriteria criteria)
{
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] DocumentInfo.DataPortal_Fetch", GetHashCode());
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "getDocumentByLibDoc";
cm.Parameters.AddWithValue("@LibDoc", criteria.LibDoc);
cm.Parameters.AddWithValue("@VersionID", criteria.VersionID);
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
{
if (!dr.Read())
{
_ErrorMessage = "No Record Found";
return;
}
ReadData(dr);
}
}
}
}
catch (Exception ex)
{
if (_MyLog.IsErrorEnabled) _MyLog.Error("DocumentInfo.DataPortal_Fetch", ex);
throw new DbCslaException("DocumentInfo.DataPortal_Fetch", ex);
}
}
}
public partial class DocumentInfoList

View File

@ -1302,6 +1302,7 @@ namespace VEPROMS.CSLA.Library
retval = ReplaceSpecialCharacters(retval);
retval = retval.Replace("\u2011","-");
retval = retval.Replace("\r\n", ";");
retval = retval.Replace("\n", ";"); //added for consistency checking with approved version
return retval;
}
public static string StripRtfFormatting(string rtf)

View File

@ -28,6 +28,7 @@ namespace Volian.Controls.Library
public delegate DialogResult vlnTreeViewPSIEvent(object sender, vlnTreeEventArgs args);
public delegate void vlnTreeViewSectionInfoEvent(object sender, vlnTreeSectionInfoEventArgs args);
public delegate void WordSectionDeletedEvent(object sender, WordSectionEventArgs args);
public delegate void vlnTreeViewPdfEvent(object sender, vlnTreeViewPdfArgs args);
public partial class vlnTreeSectionInfoEventArgs
{
private bool _IsDeleting = false;
@ -52,6 +53,33 @@ namespace Volian.Controls.Library
_IsDeleting = isDeleting;
}
}
public partial class vlnTreeViewPdfArgs
{
private string _MyFilename;
public string MyFilename
{
get { return _MyFilename; }
set { _MyFilename = value; }
}
private byte[] _MyBuffer;
public byte[] MyBuffer
{
get { return _MyBuffer; }
set { _MyBuffer = value; }
}
private string _MyWatermark;
public string MyWatermark
{
get { return _MyWatermark; }
set { _MyWatermark = value; }
}
public vlnTreeViewPdfArgs(string filename, byte[] buffer, string watermark)
{
_MyFilename = filename;
_MyBuffer = buffer;
_MyWatermark = watermark;
}
}
public partial class vlnTreeEventArgs
{
#region Business Methods
@ -277,6 +305,11 @@ namespace Volian.Controls.Library
ItemInfo _LastItemInfo = null;
#endregion
#region Events
public event vlnTreeViewPdfEvent ViewPDF;
private void OnViewPDF(object sender, vlnTreeViewPdfArgs args)
{
if (ViewPDF != null) ViewPDF(sender, args);
}
public event vlnTreeViewItemInfoDeleteEvent DeleteItemInfo;
private bool OnDeleteItemInfo(object sender, vlnTreeItemInfoEventArgs args)
{
@ -549,56 +582,83 @@ namespace Volian.Controls.Library
RevisionInfoList ril = RevisionInfoList.GetByItemID(pri.ItemID);
if (ril.Count == 0) return;
MenuItem mi = menuItemCollection.Add("Versions");
int lastApprovedRevisionID = 0;
foreach (RevisionInfo ri in ril)
{
MenuItem mir = mi.MenuItems.Add(ri.ToString());
mir.Tag = ri;
mir.Click += new EventHandler(ApprovedRevision_Click);
if (ri.LatestVersion.MyStage.IsApproved > 0 && (ri.RevisionID > lastApprovedRevisionID))
lastApprovedRevisionID = ri.RevisionID;
//mir.Click += new EventHandler(ApprovedRevision_Click);
//added jcb 20111031
MenuItem mirp = mir.MenuItems.Add("View Procedure");
mirp.Tag = ri;
mirp.Click += new EventHandler(ApprovedRevision_Click);
MenuItem mirs = mir.MenuItems.Add("View Summary of Changes");
mirs.Tag = ri;
mirs.Click += new EventHandler(SummaryOfChanges_Click);
if (ri.LatestVersion.PDF != null)
{
MenuItem mirp = mir.MenuItems.Add("View Procedure");
mirp.Tag = ri;
mirp.Click += new EventHandler(ApprovedRevision_Click);
}
if (ri.LatestVersion.SummaryPDF != null)
{
MenuItem mirs = mir.MenuItems.Add("View Summary of Changes");
mirs.Tag = ri;
mirs.Click += new EventHandler(SummaryOfChanges_Click);
}
//end added jcb 20111031
mi.Tag = lastApprovedRevisionID;
}
}
void ApprovedRevision_Click(object sender, EventArgs e)
{
bool superceded = false;
MenuItem mi = sender as MenuItem;
if (mi == null) return;
RevisionInfo ri = mi.Tag as RevisionInfo;
System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri));
{
MenuItem mip = mi.Parent as MenuItem;
if (ri.RevisionID < int.Parse(mip.Parent.Tag.ToString()))
superceded = true;
}
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : "");
OnViewPDF(sender, args);
// System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded));
}
void SummaryOfChanges_Click(object sender, EventArgs e)
{
MenuItem mi = sender as MenuItem;
if (mi == null) return;
RevisionInfo ri = mi.Tag as RevisionInfo;
System.Diagnostics.Process pps = System.Diagnostics.Process.Start(GetDocSummaryPdf(ri));
}
private string GetDocPdf(RevisionInfo ri)
{
string fileName = Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber);
FileInfo fi = new FileInfo(VlnSettings.TemporaryFolder + @"\" + fileName);
FileStream fs = fi.Create();
byte[] myPdf = ri.LatestVersion.PDF;
if (myPdf != null) fs.Write(myPdf, 0, myPdf.Length);
fs.Close();
return VlnSettings.TemporaryFolder + @"\" + fileName;
}
private string GetDocSummaryPdf(RevisionInfo ri)
{
string fileName = Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber + " Summary of Changes");
FileInfo fi = new FileInfo(VlnSettings.TemporaryFolder + @"\" + fileName);
FileStream fs = fi.Create();
byte[] myPdf = ri.LatestVersion.SummaryPDF;
if (myPdf != null) fs.Write(myPdf, 0, myPdf.Length);
fs.Close();
return VlnSettings.TemporaryFolder + @"\" + fileName;
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber + " Summary of Changes"), ri.LatestVersion.SummaryPDF, "");
OnViewPDF(sender, args);
// System.Diagnostics.Process pps = System.Diagnostics.Process.Start(GetDocSummaryPdf(ri));
}
//private string GetDocPdf(RevisionInfo ri, bool superceded)
//{
// string fileName = Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber);
// FileInfo fi = new FileInfo(VlnSettings.TemporaryFolder + @"\" + fileName);
// FileStream fs = fi.Create();
// byte[] myPdf = ri.LatestVersion.PDF;
// if (myPdf != null) fs.Write(myPdf, 0, myPdf.Length);
// fs.Close();
// if (superceded)
// AddSupercededWatermark(VlnSettings.TemporaryFolder + @"\" + fileName);
// return VlnSettings.TemporaryFolder + @"\" + fileName;
//}
//private void AddSupercededWatermark(string p)
//{
// MessageBox.Show("superceded");
//}
//private string GetDocSummaryPdf(RevisionInfo ri)
//{
// string fileName = Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber + " Summary of Changes");
// FileInfo fi = new FileInfo(VlnSettings.TemporaryFolder + @"\" + fileName);
// FileStream fs = fi.Create();
// byte[] myPdf = ri.LatestVersion.SummaryPDF;
// if (myPdf != null) fs.Write(myPdf, 0, myPdf.Length);
// fs.Close();
// return VlnSettings.TemporaryFolder + @"\" + fileName;
//}
private bool AddToInsertMenu(ItemInfo ii, int ba) // 0 = before, 1 = after

View File

@ -134,7 +134,14 @@ namespace Volian.Print.Library
PdfPTable t = CreatePdfPTable(cols);
CreatePageHeader(t, f1, f4, cols, paddingBottom, "Approval Consistency Report", "Procedures currently selected to be approved");
//more stuff
foreach (ProcedureInfo pi in MyItemInfoList)
/*
Csla.SortedBindingList<ItemInfo> sortedResults = new Csla.SortedBindingList<ItemInfo>(_SearchResults);
sortedResults.ApplySort(_DisplayMember, ListSortDirection.Ascending);
lbSrchResults.DataSource = sortedResults;
*/
Csla.SortedBindingList<ItemInfo> sortedProcs = new Csla.SortedBindingList<ItemInfo>(MyItemInfoList);
sortedProcs.ApplySort("DisplayNumber", System.ComponentModel.ListSortDirection.Ascending);
foreach (ProcedureInfo pi in sortedProcs)
{
if (pi.IsSelected)
{

View File

@ -676,5 +676,39 @@ namespace Volian.Print.Library
myPageHelper.MySection = saveSect;
myPageHelper.OnFoldoutPage = false;
}
public static byte[] WatermarkPDF(byte[] buffer, string watermark)
{
PdfReader reader = new PdfReader(buffer);
MemoryStream ms = new MemoryStream();
PdfStamper stamper = new PdfStamper(reader, ms);
PdfLayer layer = new PdfLayer("Watermark", stamper.Writer);
layer.SetPrint("Print", true);
for (int i = 1; i <= reader.NumberOfPages; i++)
{
PdfContentByte cb = stamper.GetUnderContent(i);
cb.SaveState();
cb.BeginLayer(layer);
SvgWatermark wm = new SvgWatermark(cb, watermark, System.Drawing.Color.Blue, .15F);
wm.SetSquareDotPattern(.7F);
//wm.SetTextPattern(8, 3);
//wm.SetTextPattern2(8);
//wm.SetHashPattern(1, 6);
//wm.SetDotPattern(5, 2);
wm.Draw();
cb.EndLayer();
cb.RestoreState();
}
stamper.Close();
/*
cb.SaveState();
if (_WatermarkLayer != null) cb.BeginLayer(_WatermarkLayer);
SvgWatermark myWatermark = new SvgWatermark(cb, Watermark, System.Drawing.Color.Blue, .15F);
myWatermark.SetSquareDotPattern(.7F);
myWatermark.Draw();
if (_WatermarkLayer != null) cb.EndLayer();
cb.RestoreState();
*/
return ms.ToArray();
}
}
}

View File

@ -150,10 +150,10 @@
child="version">
<folders active="set.dbf">
<folder template="." title="Working Draft" />
<folder template="approved" title="Approved Version"/>
<!--<folder template="approved" title="Approved Version"/>-->
<folder template="chgsht" title="Change Sheet Version"/>
<folder template="tmpchg" title="Temporary Change"/>
<folder template="approved\tmpchg" title="Approved Temporary Change"/>
<!--<folder template="approved\tmpchg" title="Approved Temporary Change"/>-->
</folders>
</dbObject>
<dbObject type="version"