internal List <IForm> GetForms(IDatabase db) { string defaultForm = db.DxlReader.GetDefaultForm(); List <IForm> forms = new List <IForm>(); Domino.NotesDatabase ndb = db.InnerObject as Domino.NotesDatabase; object[] notesForms = (object[])ndb.Forms; int formNo = 0; foreach (Domino.NotesForm nsform in notesForms) { if (nsform.IsSubForm) { continue; } formNo++; Form form = new Form(formNo, nsform, db); if (form.Name.Equals(defaultForm)) { form.IsDefault = true; form.IsTarget = true; } forms.Add(form); } forms.Sort(CompaireForm); return(forms); }
/// <summary> /// データベースのアイコンを出力する /// </summary> /// <param name="db"></param> /// <returns></returns> public Image ExportIcon(IDatabase db) { EnsureSession(); string xml = ""; Domino.NotesDXLExporter exporter = this._session.CreateDXLExporter(); exporter.OutputDOCTYPE = false; exporter.ConvertNotesbitmapsToGIF = true; Domino.NotesDatabase ndb = db.InnerObject as Domino.NotesDatabase; if (!string.IsNullOrEmpty(ndb.Server)) { //Server中のファイルをコピーする ndb = this.CloneDatabase(ndb); } try { Domino.NotesDocument iconDoc = ndb.GetDocumentByID("FFFF0010"); xml = exporter.Export(iconDoc); } catch (Exception) { Domino.NotesNoteCollection notes = ndb.CreateNoteCollection(false); notes.SelectIcon = true; notes.BuildCollection(); xml = exporter.Export(notes); } byte[] rawData = GetRawIconData(xml); IconCreator creator = new IconCreator(); Image rawIcon = creator.getRawIconImage(rawData); return(rawIcon); }
private Domino.NotesDatabase CloneDatabase(Domino.NotesDatabase srcDb) { EnsureSession(); string tempDbPath = System.IO.Path.GetTempFileName(); string newDbName = System.IO.Path.ChangeExtension(tempDbPath, ".nsf"); Domino.NotesDatabase dstDB = srcDb.CreateCopy("", newDbName); return(dstDB); }
public IDatabase GetDataBase(string fileName, string server) { EnsureSession(); Domino.NotesDatabase ndb = this._session.GetDatabase(server, fileName, false); if (ndb == null) { return(null); } return(new Database(this, ndb)); }
internal List <IView> GetViews(IDatabase db) { Domino.NotesDatabase ndb = db.InnerObject as Domino.NotesDatabase; List <IView> views = new List <IView>(); object[] notesViews = (object[])ndb.Views; foreach (Domino.NotesView view in notesViews) { views.Add(new View(view, db)); } views.Sort(CompaireView); return(views); }
internal Database(NotesAccessor accessor, Domino.NotesDatabase notesDb) { if (!notesDb.IsOpen) { notesDb.Open(); } this._accessor = accessor; this._notesDb = notesDb; this._title = notesDb.Title; this._server = notesDb.Server; this._sourceType = (NotesDbType)(int)notesDb.type; this._targetType = MappingInfo.GetTagetDbType(this._sourceType); this._fileName = notesDb.FileName; this._notesUrl = notesDb.NotesURL; this._replicaId = notesDb.ReplicaID; this._sourcePath = notesDb.FilePath; }
/// <summary> /// DXLへ出力 /// </summary> /// <param name="db"></param> /// <returns></returns> public string ExportDxl(IDatabase db, ExportMode mode) { EnsureSession(); bool isColned = false; Domino.NotesDXLExporter exporter = this._session.CreateDXLExporter(); exporter.ForceNoteFormat = false; exporter.OutputDOCTYPE = false; exporter.ConvertNotesbitmapsToGIF = true; Domino.NotesDatabase ndb = db.InnerObject as Domino.NotesDatabase; if (!string.IsNullOrEmpty(ndb.Server)) { //Server中のファイルをコピーする ndb = this.CloneDatabase(ndb); isColned = true; } try { Domino.NotesNoteCollection coll = ndb.CreateNoteCollection(false); switch (mode) { case ExportMode.Forms: coll.SelectSharedFields = true; coll.SelectForms = true; coll.SelectSubforms = true; break; case ExportMode.Icon: coll.SelectIcon = true; break; case ExportMode.Views: coll.SelectViews = true; break; case ExportMode.Resources: coll.SelectImageResources = true; break; case ExportMode.All: coll.SelectAllDesignElements(true); break; default: break; } coll.BuildCollection(); string xml = exporter.Export(coll); return(xml); } finally { if (isColned && ndb != null) { try { string tempfile = ndb.FilePath; if (System.IO.File.Exists(tempfile)) { System.IO.File.Delete(tempfile); } } catch { //一時ファイル削除できない } } } }