コード例 #1
0
        private AuthenticationLevel LoginToIndividualSource(string sourceAlias, string username, string password)
        {
            AuthenticationLevel ret = AuthenticationLevel.None;

            try
            {
                string          wsId     = m_SysConfig.GetDefaultConfig().WorkstationAlias;
                UserInfo        userInfo = new UserInfo(username, password);
                WorkstationInfo wsInfo   = new WorkstationInfo(wsId, userInfo);

                LoginResponse loginResponse = m_DataSourceAccess.Login(sourceAlias, wsInfo);

                ret = loginResponse.UserAuthenticationLevel;

                if (!ret.Equals(AuthenticationLevel.None))
                {
                    SysConfiguration sysConfig = new SysConfiguration();
                    sysConfig.ID = sourceAlias;
                    sysConfig.ContainerDBConnectionString = loginResponse.systemConfiguration.ContainerDBConnectString;
                    sysConfig.ContainerRefreshPeriodmsecs = loginResponse.systemConfiguration.ContainerRefreshPeriodSeconds * 1000;

                    if (m_SysConfig.Contains(sourceAlias))
                    {
                        m_SysConfig.Delete(sourceAlias);
                    }

                    m_SysConfig.Add(sysConfig);

                    if (m_SysConfig.UserProfileManager.Profile == null)
                    {
                        ProfileObject profile = ProfileTranslator.Translate(loginResponse.UserProfile, 4);
                        profile.SourceAlias = sourceAlias;
                        profile.UserName    = wsInfo.userInfo.UserName;
                        profile.Password    = wsInfo.userInfo.Password;

                        m_SysConfig.UserProfileManager.Profile = profile;
                        m_SysConfig.UserProfileManager.Profile.ProfileUpdatedEvent += new ProfileUpdated(ProfileUpdated);
                    }

                    DataSet caselist = null;
                    m_DataSourceAccess.GetCaseList(sourceAlias, out caselist);

                    if (caselist != null)
                    {
                        CaseListDataSet caseListDataSet = (CaseListDataSet)caselist;
                        caseListDataSet.CaseListTable.CaseListTableRowChanged +=
                            new CaseListDataSet.CaseListTableRowChangeEventHandler(CaseListTable_CaseListTableRowChanged);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(ret);
        }
コード例 #2
0
        private void Tab1GetCaseListButton_Click(object sender, RoutedEventArgs e)
        {
            CaseListDataSet caseListDataSet = m_AWSCommEndPoint1.RequestCaseList(m_AWSId);

            Tab1CaseListBox.Items.Clear();

            foreach (DataRow row in caseListDataSet.Tables[0].Rows)
            {
                Tab1CaseListBox.Items.Add(row[caseListDataSet.CaseListTable.CaseIdColumn].ToString());
            }
        }
コード例 #3
0
ファイル: UserControl1.xaml.cs プロジェクト: marzlia/CXPortal
        void Source_listBox_SelectionChanged(object sender, RoutedEventArgs e)
        {
            ListBox ListBox1 = sender as ListBox;

            try
            {
                Source_dataGrid.DataContext = null;

                SelectedCaseSource = ListBox1.SelectedItem as CaseSourcesObject;

                if (SelectedCaseSource != null && SelectedCaseSource.IsLoggedIn)
                {
                    string selectedItem = SelectedCaseSource.Name;

                    try
                    {
                        DataSet tempDataSet;
                        m_SysMgr.GetCaseList(selectedItem, out tempDataSet);
                        m_CaseList = (CaseListDataSet)tempDataSet;
                        var CaseListview = (ExtendedCollectionViewSource)FindResource("cvs");
                        CaseListview.Source           = m_CaseList.Tables[0].DefaultView;
                        Source_dataGrid.DataContext   = CaseListview;
                        Source_dataGrid.SelectedIndex = -1;

                        foreach (DataGridColumn column in Source_dataGrid.Columns)
                        {
                            string path = BindingOperations.GetBindingExpression(column, DataGridColumn.HeaderProperty).ParentBinding.Path.Path;
                            if (path == "UpdateTime")
                            {
                                ListSortDirection direction = ListSortDirection.Descending;
                                column.SortDirection = direction;
                                SortCaseList(direction, column);
                                break;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        //TODO: Log error
                    }
                    if (selectedItem.Contains("AWSComm"))
                    {
                        m_SysConfigMgr.GetConfig(selectedItem);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
コード例 #4
0
        public CaseListDataSet getAllEntries(UInt16 timeSpan)
        {
            string queryString;

            if (timeSpan > 0)
            {
                DateTime datetime = DateTime.Now.AddDays(-timeSpan);
                queryString = QuerySelectRowString + " WHERE UpdateTime >= '" + datetime + "' ORDER BY UpdateTime DESC";
            }
            else
            {
                queryString = QuerySelectRowString + " ORDER BY UpdateTime DESC";
            }

            try
            {
                int             rows;
                CaseListDataSet ds = new CaseListDataSet();

                // Create the DbCommand.

                DbCommand SelectTableCommand = factory.CreateCommand();
                SelectTableCommand.CommandText = queryString;
                SelectTableCommand.Connection  = connection;

                //adapter = factory.CreateDataAdapter();
                adapter.SelectCommand = SelectTableCommand;

                rows = adapter.Fill(ds.CaseListTable);

                //foreach (CaseListDataSet.CaseListTableRow row in ds.CaseListTable)
                //{
                //    try
                //    {
                //        row[ds.CaseListTable.ResultColumn] = Enum.GetName(typeof(WorkstationDecision), Convert.ToInt32(row[ds.CaseListTable.ResultColumn]));
                //    }
                //    catch (Exception)
                //    {
                //        row[ds.CaseListTable.ResultColumn] = WorkstationDecision.Unknown;
                //    }
                //}

                return(ds);
            }
            catch (Exception exp)
            {
                throw exp;
            }
        }
コード例 #5
0
ファイル: DBCaseList.cs プロジェクト: marzlia/CXPortal
        public override void PopulateCaseList()
        {
            CaseListDataSet ds = new CaseListDataSet();

            try
            {
                // get all entries from the database
                ds = m_ArchiveDB.getAllEntries(0);
                List.Merge(ds);
            }
            catch (Exception exp)
            {
                throw exp;
            }
        }
コード例 #6
0
 private void GetCaseList(CaseSource <T> caseSourceT, string alias)
 {
     try
     {
         caseSourceT.CaseList = new CaseListDataSet();
         CaseListDataSet tempCaseList = caseSourceT.EndPoint.RequestCaseList(m_WSId);
         lock (caseSourceT.CaseListLock)
         {
             caseSourceT.CaseList.Merge(tempCaseList);
         }
     }
     catch (Exception ex)
     {
         RemoveSource(caseSourceT);
         throw;
     }
 }
コード例 #7
0
ファイル: ArchiveDatabase.cs プロジェクト: BdGL3/CXPortal
        override public void update(CaseListDataSet.CaseListTableDataTable table)
        {
            try
            {
                if (connection.State == ConnectionState.Closed)
                    connection.Open();
               
                adapter.Update(table);

                if (table.HasErrors)
                {
                    CaseListDataSet.CaseListTableRow[] rows = (CaseListDataSet.CaseListTableRow[])table.GetErrors();
                    foreach (CaseListDataSet.CaseListTableRow row in rows)
                    {
                        if (row.RowState == DataRowState.Added && row.RowError.Contains("duplicate"))
                            UpdateCaseFields(row);
                        else
                            base.logger.PrintInfoLine(row.RowError);
                        
                    }
                }
            }
            catch (DbException ex)
            {
                //duplicate row being inserted error
                if (ex.ErrorCode == -2146232060)
                {                   
                    CaseListDataSet.CaseListTableRow[] rows = (CaseListDataSet.CaseListTableRow[])table.GetErrors();

                    foreach (CaseListDataSet.CaseListTableRow row in rows)
                    {
                        if(row.RowState == DataRowState.Added)
                            UpdateCaseFields(row);
                    }                    
                }
                else
                    throw;

            }
            catch
            {
                throw;
            }
        }
コード例 #8
0
        public int LoadDataSet(CaseListDataSet csDataSet)
        {
            int rowAffected = 0;

            try
            {
                rowAffected = m_adapter.Fill(csDataSet.CaseListTable);
            }
            catch (SqlCeException sqlexception)
            {
                throw sqlexception;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(rowAffected);
        }
コード例 #9
0
        override public CaseListDataSet query(string caseid)
        {
            try
            {
                string queryString = QuerySelectRowString + " WHERE CaseId = '" + caseid + "'";

                int             rows;
                CaseListDataSet ds = new CaseListDataSet();

                // Create the DbCommand.

                DbCommand SelectTableCommand = factory.CreateCommand();
                SelectTableCommand.CommandText = queryString;
                SelectTableCommand.Connection  = connection;

                //adapter = factory.CreateDataAdapter();
                adapter.SelectCommand = SelectTableCommand;

                rows = adapter.Fill(ds.CaseListTable);

                foreach (CaseListDataSet.CaseListTableRow row in ds.CaseListTable)
                {
                    try
                    {
                        row[ds.CaseListTable.ResultColumn] = Enum.GetName(typeof(WorkstationDecision), Convert.ToInt32(row[ds.CaseListTable.ResultColumn]));
                    }
                    catch (Exception)
                    {
                        row[ds.CaseListTable.ResultColumn] = WorkstationDecision.Unknown;
                    }
                }

                return(ds);
            }
            catch
            {
                throw;
            }
        }
コード例 #10
0
ファイル: Database.cs プロジェクト: BdGL3/CXPortal
 virtual public void update(CaseListDataSet.CaseListTableDataTable table)
 {
 }
コード例 #11
0
ファイル: DBCaseList.cs プロジェクト: BdGL3/CXPortal
        public override void PopulateCaseList()
        {           
            CaseListDataSet ds = new CaseListDataSet();

            try
            {
                // get all entries from the database
                ds = m_ArchiveDB.getAllEntries(0);
                List.Merge(ds);

            }
            catch (Exception exp)
            {
                throw exp;
            }
        }
コード例 #12
0
ファイル: UserControl1.xaml.cs プロジェクト: BdGL3/CXPortal
        void Source_listBox_SelectionChanged(object sender, RoutedEventArgs e)
        {
            ListBox ListBox1 = sender as ListBox;

            try
            {
                Source_dataGrid.DataContext = null;

                SelectedCaseSource = ListBox1.SelectedItem as CaseSourcesObject;

                if (SelectedCaseSource != null && SelectedCaseSource.IsLoggedIn)
                {
                    string selectedItem = SelectedCaseSource.Name;

                    try
                    {
                        DataSet tempDataSet;
                        m_SysMgr.GetCaseList(selectedItem, out tempDataSet);
                        m_CaseList = (CaseListDataSet)tempDataSet;
                        var CaseListview = (ExtendedCollectionViewSource)FindResource("cvs");
                        CaseListview.Source = m_CaseList.Tables[0].DefaultView;
                        Source_dataGrid.DataContext = CaseListview;
                        Source_dataGrid.SelectedIndex = -1;

                        foreach (DataGridColumn column in Source_dataGrid.Columns)
                        {
                            string path = BindingOperations.GetBindingExpression(column, DataGridColumn.HeaderProperty).ParentBinding.Path.Path;
                            if (path == "UpdateTime")
                            {
                                ListSortDirection direction = ListSortDirection.Descending;
                                column.SortDirection = direction;
                                SortCaseList(direction, column);
                                break;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        //TODO: Log error
                    }
                    if (selectedItem.Contains("AWSComm"))
                        m_SysConfigMgr.GetConfig(selectedItem);

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
コード例 #13
0
ファイル: ArchiveDatabase.cs プロジェクト: BdGL3/CXPortal
        public CaseListDataSet getAllEntries(UInt16 timeSpan)
        {
            string queryString;

            if (timeSpan > 0)
            {
                DateTime datetime = DateTime.Now.AddDays(-timeSpan);
                queryString = QuerySelectRowString + " WHERE UpdateTime >= '" + datetime + "' ORDER BY UpdateTime DESC";
            }
            else
                queryString = QuerySelectRowString + " ORDER BY UpdateTime DESC";

            try
            {
                int rows;
                CaseListDataSet ds = new CaseListDataSet();

                // Create the DbCommand.

                DbCommand SelectTableCommand = factory.CreateCommand();
                SelectTableCommand.CommandText = queryString;
                SelectTableCommand.Connection = connection;

                //adapter = factory.CreateDataAdapter();
                adapter.SelectCommand = SelectTableCommand;

                rows = adapter.Fill(ds.CaseListTable);

                //foreach (CaseListDataSet.CaseListTableRow row in ds.CaseListTable)
                //{
                //    try
                //    {
                //        row[ds.CaseListTable.ResultColumn] = Enum.GetName(typeof(WorkstationDecision), Convert.ToInt32(row[ds.CaseListTable.ResultColumn]));
                //    }
                //    catch (Exception)
                //    {
                //        row[ds.CaseListTable.ResultColumn] = WorkstationDecision.Unknown;
                //    }
                //}

                return ds;
            }
            catch (Exception exp)
            {
                throw exp;
            }
        }
コード例 #14
0
ファイル: ArchiveDatabase.cs プロジェクト: BdGL3/CXPortal
        public void UpdateCaseFields(CaseListDataSet.CaseListTableRow row)
        {
            try
            {
                string ImageStr = "0x" + BitConverter.ToString(row.Image).Replace("-", string.Empty);
                
                string updateString = "UPDATE ArchiveData SET " +
                    "[CaseId]= '" + row.CaseId + "'" +
                    ", [ReferenceImage]= " + Convert.ToInt32(row.ReferenceImage) +
                    ", [ObjectId]= '" + row.ObjectId + "'" +
                    ", [AnalystComment]= '" + row.AnalystComment + "'" +
                    ", [FlightNumber]= '" + row.FlightNumber + " '" +
                    ", [Analyst]= '" + row.Analyst + "'" +
                    ", [CaseDirectory]= '" + row.CaseDirectory + "'" +
                    ", [Result]= " + row.Result +
                    ", [UpdateTime]= '" + row.UpdateTime.ToString("yyyy'-'MM'-'dd' 'HH':'mm':'ss'.'fff") + "'" +
                    ", [Archived]= " + Convert.ToInt32(row.Archived) + 
                    ", [AnalysisTime]= " + row.AnalysisTime +                   
                    ", [DFCMatch]= " + Convert.ToInt32(row.DFCMatch) +
                    ", [CreateTime]= '" + row.CreateTime.ToString("yyyy'-'MM'-'dd' 'HH':'mm':'ss'.'fff") + "'" +
                    ", [Image] = " + ImageStr +
                    " WHERE CaseId='" + row.CaseId + "' AND ReferenceImage= " + Convert.ToInt32(row.ReferenceImage);

                base.UpdateDatabasePartialEntry(updateString);
            }
            catch
            {
                throw;
            }
        }
コード例 #15
0
ファイル: DBCaseList.cs プロジェクト: marzlia/CXPortal
        public override void UpdateCaseList(Boolean modifyExistingEntry, string casefile)
        {
            CaseListDataSet ds = new CaseListDataSet();

            try
            {
                //if case has been added to the temporary archive and case.xml file exist
                if (/*!modifyExistingEntry && */ casefile.EndsWith("\\case.xml"))
                {
                    if (m_ContainerDBPresent)
                    {
                        String     casefilepath = casefile.Substring(0, casefile.LastIndexOf("\\"));
                        String     caseFile     = casefile.Substring(casefile.LastIndexOf("\\") + 1);
                        CaseObject caseObj      = base.GetCaseObj(casefilepath, caseFile);
                        bool       DFCMatch     = false;

                        //udpate Container DB
                        if (caseObj != null)
                        {
                            if (caseObj.scanInfo != null)
                            {
                                if (caseObj.scanInfo.container != null)
                                {
                                    if (caseObj.scanInfo.container.Id != null)
                                    {
                                        try
                                        {
                                            DataRow Row = m_ContainerDB.query(caseObj.scanInfo.container.Id);

                                            //If case's container Id exist in the container database table
                                            if (Row != null)
                                            {
                                                bool ImageExists = false;

                                                foreach (DataAttachment attach in caseObj.attachments.GetXrayImageAttachments())
                                                {
                                                    if (attach.attachmentId.Contains(".pxe"))
                                                    {
                                                        ImageExists = true;
                                                        break;
                                                    }
                                                }

                                                int SequenceNum = -1;
                                                int BatchNum    = -1;


                                                //if case.xml lists sequence number and container DB CheckInSequence value is not listed
                                                //then go ahead and update the db from xml file value.
                                                if (caseObj.scanInfo != null &&
                                                    caseObj.scanInfo.container != null &&
                                                    !String.IsNullOrWhiteSpace(caseObj.scanInfo.container.SequenceNum) &&
                                                    m_ContainerDB.GetSequenceNumber(Row) == 0)
                                                {
                                                    SequenceNum = Convert.ToInt32(caseObj.scanInfo.container.SequenceNum);
                                                }

                                                if (caseObj.scanInfo != null &&
                                                    caseObj.scanInfo.conveyance != null &&
                                                    !String.IsNullOrWhiteSpace(caseObj.scanInfo.conveyance.BatchNum) &&
                                                    m_ContainerDB.GetBatchNumber(Row) == 0)
                                                {
                                                    BatchNum = Convert.ToInt32(caseObj.scanInfo.conveyance.BatchNum);
                                                }

                                                int StatusMajor = 30;

                                                if (caseObj.ResultsList != null && caseObj.ResultsList.Count > 0)
                                                {
                                                    result   tempResult = caseObj.ResultsList[0];
                                                    DateTime tempDt     = Convert.ToDateTime(tempResult.CreateTime);

                                                    foreach (result res in caseObj.ResultsList)
                                                    {
                                                        DateTime dt = Convert.ToDateTime(res.CreateTime);

                                                        if (dt.CompareTo(tempDt) > 0)
                                                        {
                                                            tempResult = res;
                                                        }
                                                    }

                                                    if (tempResult.Decision == WorkstationDecision.Clear.ToString())
                                                    {
                                                        StatusMajor = 40;
                                                    }
                                                    else if (tempResult.Decision == WorkstationDecision.Reject.ToString())
                                                    {
                                                        StatusMajor = 60;
                                                    }
                                                    else if (tempResult.Decision == WorkstationDecision.Caution.ToString())
                                                    {
                                                        if (tempResult.Reason == WorkstationReason.NoImage.ToString())
                                                        {
                                                            StatusMajor = 30;
                                                        }
                                                        else
                                                        {
                                                            StatusMajor = 50;
                                                        }
                                                    }
                                                }

                                                int rowsUpdated = 0;

                                                //update container db with statusMajor, ImageExists, SequenceNum and BatchNum
                                                if (SequenceNum > 0 && BatchNum > 0)
                                                {
                                                    rowsUpdated = m_ContainerDB.Update(Row, StatusMajor, ImageExists, SequenceNum, BatchNum);
                                                }
                                                //update container db with statusMajor, ImageExists and SequenceNum
                                                else if (SequenceNum > 0)
                                                {
                                                    rowsUpdated = m_ContainerDB.UpdateStatusImageAndSeq(Row, StatusMajor, ImageExists, SequenceNum);
                                                }
                                                //update container db with statusMajor, ImageExists and Batch
                                                else if (BatchNum > 0)
                                                {
                                                    rowsUpdated = m_ContainerDB.UpdateStatusImageAndBatch(Row, StatusMajor, ImageExists, BatchNum);
                                                }
                                                ////update container db with statusMajor and ImageExists
                                                else
                                                {
                                                    rowsUpdated = m_ContainerDB.Update(Row, StatusMajor, ImageExists);
                                                }

                                                logger.PrintInfoLine("Container DB updated " + rowsUpdated + " row(s), FlightNumber = " + Row["FlightNumber"] + " ULDNumber = " +
                                                                     Row["ULDNumber"]);

                                                DFCMatch = true;
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            logger.PrintInfoLine(ex.Message);
                                        }
                                    }
                                }
                            }
                        }

                        base.m_isDFCMatch = DFCMatch;
                    }

                    base.UpdateCaseList(modifyExistingEntry, casefile);
                }
            }
            catch (Exception exp)
            {
                throw exp;
            }
        }
コード例 #16
0
ファイル: ArchiveDatabase.cs プロジェクト: BdGL3/CXPortal
        override public CaseListDataSet query(string caseid)
        {
            try
            {
                string queryString = QuerySelectRowString + " WHERE CaseId = '" + caseid + "'";

                int rows;
                CaseListDataSet ds = new CaseListDataSet();

                // Create the DbCommand.

                DbCommand SelectTableCommand = factory.CreateCommand();
                SelectTableCommand.CommandText = queryString;
                SelectTableCommand.Connection = connection;

                //adapter = factory.CreateDataAdapter();
                adapter.SelectCommand = SelectTableCommand;

                rows = adapter.Fill(ds.CaseListTable);

                foreach (CaseListDataSet.CaseListTableRow row in ds.CaseListTable)
                {
                    try
                    {
                        row[ds.CaseListTable.ResultColumn] = Enum.GetName(typeof(WorkstationDecision), Convert.ToInt32(row[ds.CaseListTable.ResultColumn]));
                    }
                    catch (Exception)
                    {
                        row[ds.CaseListTable.ResultColumn] = WorkstationDecision.Unknown;
                    }
                }

                return ds;
            }
            catch
            {
                throw;
            }
        }
コード例 #17
0
ファイル: Base.cs プロジェクト: BdGL3/CXPortal
 public CaseListUpdate(CaseListDataSet list, CaseListUpdateState state)
 {
     m_state = state;
     m_dsCaseList = list;
 }
コード例 #18
0
ファイル: Base.cs プロジェクト: BdGL3/CXPortal
 public CaseListUpdate()
 {
     m_state = CaseListUpdateState.None;
     m_dsCaseList = null;
 }
コード例 #19
0
ファイル: LocalDatabase.cs プロジェクト: BdGL3/CXPortal
        public int LoadDataSet(CaseListDataSet csDataSet)
        {

            int rowAffected = 0;

            try
            {                
                rowAffected = m_adapter.Fill(csDataSet.CaseListTable);
            }
            catch (SqlCeException sqlexception)
            {
                throw sqlexception;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return rowAffected;

        }
コード例 #20
0
ファイル: LocalDatabase.cs プロジェクト: BdGL3/CXPortal
        override public void update(CaseListDataSet.CaseListTableDataTable table)
        {
            try
            {
                if (m_connection.State == ConnectionState.Closed)
                    m_connection.Open();

                SqlCeTransaction se = m_connection.BeginTransaction(IsolationLevel.Serializable);
                try
                {
                    m_adapter.Update(table);
                }
                catch (Exception ex)
                {
                    m_connection.Close();
                    m_connection.Open();

                    se = m_connection.BeginTransaction(IsolationLevel.Serializable);
                    m_adapter.Update(table);
                }

                se.Commit(CommitMode.Immediate);
            }
            catch (SqlCeException ex)
            {
                if (!ex.Message.Contains("duplicate"))
                    throw;
            }
            catch
            {
                throw;
            }
        }
コード例 #21
0
ファイル: CotainerDatabase.cs プロジェクト: BdGL3/CXPortal
 override public void update(CaseListDataSet.CaseListTableDataTable table)
 {
 }
コード例 #22
0
ファイル: LocalDatabase.cs プロジェクト: BdGL3/CXPortal
        public void CreateTable(CaseListDataSet.CaseListTableDataTable table)
        {
            SqlCeCommand cmd;

            //if table already exist then take not action
            string tableAlreadyExist = "Select * from information_schema.tables where table_name = 'LocalArchiveData'";

            cmd = new SqlCeCommand(tableAlreadyExist, m_connection);
            object result;

            try
            {
                result =cmd.ExecuteScalar();
            }
            catch (SqlCeException sqlexception)
            {
                throw sqlexception;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            if (result == null)
            {

                string sql = "create table LocalArchiveData (";

                foreach (DataColumn column in table.Columns)
                {
                    string datatype = "nvarchar (256)";
                    String allowNull = string.Empty;

                    if (column.ColumnName == "Image")
                        datatype = "image";

                    switch (column.ColumnName)
                    {
                        case "Image":
                            datatype = "image";
                            break;
                        case "CaseId":
                            datatype = "nvarchar (24)";
                            allowNull = "not null";
                            break;
                        case "Result":                        
                            datatype = "nvarchar (24)";
                            break;
                        case "AnalystComment":                        
                            datatype = "nvarchar (256)";
                            break;
                        case "ObjectId":
                        case "FlightNumber":
                        case "CreateTime":                       
                            datatype = "nvarchar (50)";
                            break;                        
                        case "Analyst":
                            datatype = "nvarchar (64)";
                            break;
                        case "CaseDirectory":
                            datatype = "nvarchar (96)";
                            break;
                        case "ReferenceImage":
                            datatype = "bit";
                            allowNull = "not null";
                            break;
                        case "Archived":
                        case "DFCMatch":
                            datatype = "bit";
                            break;                        
                        case "UpdateTime":
                            datatype = "datetime";
                            break;                         
                        case "AnalysisTime":
                            datatype = "int";
                            break; 
                    }
                    
                    if(column.ColumnName != "CTI" && column.ColumnName != "Area" && column.ColumnName != "AssignedId")
                        sql += column.ColumnName + " " + datatype + " " + allowNull + ", ";

                }
                sql += "Constraint PK Primary Key (";

                foreach (DataColumn column in table.PrimaryKey)
                {
                    sql += column.ColumnName + ", ";
                }

                sql = sql.Substring(0, sql.LastIndexOf(","));
                sql += ") )";

                cmd = new SqlCeCommand(sql, m_connection);

                try
                {
                    cmd.ExecuteNonQuery();
                }
                catch (SqlCeException sqlexception)
                {
                    throw sqlexception;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            try
            {
                string cmdText = "INSERT INTO LocalArchiveData (CaseId, AnalystComment, ObjectId, FlightNumber, Analyst, CaseDirectory, ReferenceImage, Result, UpdateTime, CreateTime, Image, DFCMatch) " +
                    "VALUES (@CaseId, @AnalystComment, @ObjectId, @FlightNumber, @Analyst, @CaseDirectory, @ReferenceImage, @Result, @UpdateTime, @CreateTime, @Image, @DFCMatch)";

                SqlCeCommand command = new SqlCeCommand(cmdText, m_connection);
                command.Parameters.Add("@CaseId", SqlDbType.NVarChar, 24, "CaseId");
                command.Parameters.Add("@AnalystComment", SqlDbType.NVarChar, 256, "AnalystComment");
                command.Parameters.Add("@ObjectId", SqlDbType.NVarChar, 50, "ObjectId");
                command.Parameters.Add("@FlightNumber", SqlDbType.NVarChar, 50, "FlightNumber");
                command.Parameters.Add("@Analyst", SqlDbType.NVarChar, 64, "Analyst");
                command.Parameters.Add("@CaseDirectory", SqlDbType.NVarChar, 96, "CaseDirectory");
                command.Parameters.Add("@ReferenceImage", SqlDbType.Bit, 1, "ReferenceImage");
                command.Parameters.Add("@Result", SqlDbType.NVarChar, 24, "Result");
                command.Parameters.Add("@UpdateTime", SqlDbType.DateTime, 50, "UpdateTime");
                command.Parameters.Add("@CreateTime", SqlDbType.NVarChar, 50, "CreateTime");
                command.Parameters.Add("@Image", SqlDbType.Image, 20000, "Image");
                command.Parameters.Add("@DFCMatch", SqlDbType.Bit, 1, "DFCMatch");               

                m_adapter.InsertCommand = command;

                cmdText = "UPDATE LocalArchiveData SET CaseId = @CaseId, AnalystComment = @AnalystComment, ObjectId = @ObjectId," +
                    "FlightNumber = @FlightNumber, Analyst = @Analyst, CaseDirectory = @CaseDirectory, ReferenceImage = @ReferenceImage," +
                    "Result = @Result, UpdateTime = @UpdateTime, CreateTime = @CreateTime, Image = @Image, DFCMatch = @DFCMatch " +
                    "WHERE CaseId = @oldCaseId AND ReferenceImage = @oldReferenceImage";

                command = new SqlCeCommand(cmdText, m_connection);
                command.Parameters.Add("@CaseId", SqlDbType.NVarChar, 24, "CaseId");
                command.Parameters.Add("@AnalystComment", SqlDbType.NVarChar, 256, "AnalystComment");
                command.Parameters.Add("@ObjectId", SqlDbType.NVarChar, 50, "ObjectId");
                command.Parameters.Add("@FlightNumber", SqlDbType.NVarChar, 50, "FlightNumber");
                command.Parameters.Add("@Analyst", SqlDbType.NVarChar, 64, "Analyst");
                command.Parameters.Add("@CaseDirectory", SqlDbType.NVarChar, 96, "CaseDirectory");
                command.Parameters.Add("@ReferenceImage", SqlDbType.Bit, 1, "ReferenceImage");
                command.Parameters.Add("@Result", SqlDbType.NVarChar, 24, "Result");
                command.Parameters.Add("@UpdateTime", SqlDbType.DateTime, 50, "UpdateTime");
                command.Parameters.Add("@CreateTime", SqlDbType.NVarChar, 50, "CreateTime");                
                command.Parameters.Add("@Image", SqlDbType.Image, 20000, "Image");
                command.Parameters.Add("@DFCMatch", SqlDbType.Bit, 1, "DFCMatch");                
                
                SqlCeParameter parameter = command.Parameters.Add("@oldCaseId", SqlDbType.NVarChar, 24, "CaseId");
                parameter.SourceVersion = DataRowVersion.Original;

                parameter = command.Parameters.Add("@oldReferenceImage", SqlDbType.Bit, 1, "ReferenceImage");
                parameter.SourceVersion = DataRowVersion.Original;
                
                m_adapter.UpdateCommand = command;

                cmdText = "DELETE FROM LocalArchiveData WHERE CaseId = @oldCaseId AND ReferenceImage = @oldReferenceImage";
                command = new SqlCeCommand(cmdText, m_connection);
                parameter = parameter = command.Parameters.Add("@oldCaseId", SqlDbType.NVarChar, 24, "CaseId");
                parameter.SourceVersion = DataRowVersion.Original;

                parameter = command.Parameters.Add("@oldReferenceImage", SqlDbType.Bit, 1, "ReferenceImage");
                parameter.SourceVersion = DataRowVersion.Original;

                m_adapter.DeleteCommand = command;
                m_adapter.MissingSchemaAction = MissingSchemaAction.Ignore;
            }
            catch
            {
                throw;
            }
        }
コード例 #23
0
ファイル: Base.cs プロジェクト: marzlia/CXPortal
 public CaseListUpdate(CaseListDataSet list, CaseListUpdateState state)
 {
     m_state      = state;
     m_dsCaseList = list;
 }
コード例 #24
0
ファイル: Base.cs プロジェクト: marzlia/CXPortal
 public CaseListUpdate()
 {
     m_state      = CaseListUpdateState.None;
     m_dsCaseList = null;
 }
コード例 #25
0
ファイル: FSCaseList.cs プロジェクト: BdGL3/CXPortal
        public override void UpdateCaseList(Boolean modifyExistingEntry, string casefile)
        {
            CaseListDataSet ds = new CaseListDataSet();

            try
            {
                base.UpdateCaseList(modifyExistingEntry, casefile);

                //if case has been added to the temporary archive and case.xml file exist
                if (/*!modifyExistingEntry && */ casefile.EndsWith("\\case.xml"))
                {
                    if (m_ContainerDBPresent)
                    {
                        String casefilepath = casefile.Substring(0, casefile.LastIndexOf("\\"));
                        String caseFile = casefile.Substring(casefile.LastIndexOf("\\") + 1);
                        CaseObject caseObj = base.GetCaseObj(casefilepath, caseFile);
                        bool DFCMatch = false;

                        //udpate Container DB
                        if (caseObj != null)
                        {
                            if (caseObj.scanInfo != null)
                            {
                                if (caseObj.scanInfo.container != null)
                                {
                                    if (caseObj.scanInfo.container.Id != null)
                                    {
                                        try
                                        {
                                            DataRow Row = m_ContainerDB.query(caseObj.scanInfo.container.Id);

                                            //If case's container Id exist in the container database table
                                            if (Row != null)
                                            {
                                                bool ImageExists = false;

                                                foreach (DataAttachment attach in caseObj.attachments.GetXrayImageAttachments())
                                                {
                                                    if (attach.attachmentId.Contains(".pxe"))
                                                    {
                                                        ImageExists = true;
                                                        break;
                                                    }
                                                }

                                                int SequenceNum = -1;
                                                int BatchNum = -1;


                                                //if case.xml lists sequence number and container DB CheckInSequence value is not listed
                                                //then go ahead and update the db from xml file value.
                                                if (caseObj.scanInfo != null &&
                                                    caseObj.scanInfo.container != null &&
                                                    !String.IsNullOrWhiteSpace(caseObj.scanInfo.container.SequenceNum) &&
                                                    m_ContainerDB.GetSequenceNumber(Row) == 0)
                                                {
                                                    SequenceNum = Convert.ToInt32(caseObj.scanInfo.container.SequenceNum);
                                                }

                                                if (caseObj.scanInfo != null && 
                                                    caseObj.scanInfo.conveyance != null &&
                                                    !String.IsNullOrWhiteSpace(caseObj.scanInfo.conveyance.BatchNum) &&
                                                    m_ContainerDB.GetBatchNumber(Row) == 0)
                                                {
                                                    BatchNum = Convert.ToInt32(caseObj.scanInfo.conveyance.BatchNum);
                                                }

                                                int StatusMajor = 30;

                                                if (caseObj.ResultsList != null && caseObj.ResultsList.Count > 0)
                                                {
                                                    result tempResult = caseObj.ResultsList[0];
                                                    DateTime tempDt = Convert.ToDateTime(tempResult.CreateTime);

                                                    foreach (result res in caseObj.ResultsList)
                                                    {
                                                        DateTime dt = Convert.ToDateTime(res.CreateTime);

                                                        if (dt.CompareTo(tempDt) > 0)
                                                        {                                                       
                                                            tempResult = res;
                                                        }
                                                    }

                                                    if (tempResult.Decision == WorkstationDecision.Clear.ToString())
                                                        StatusMajor = 40;
                                                    else if (tempResult.Decision == WorkstationDecision.Reject.ToString())
                                                        StatusMajor = 60;
                                                    else if (tempResult.Decision == WorkstationDecision.Caution.ToString())
                                                    {
                                                        if (tempResult.Reason == WorkstationReason.NoImage.ToString())
                                                            StatusMajor = 30;
                                                        else
                                                            StatusMajor = 50;
                                                    }
                                                }

                                                int rowsUpdated = 0;

                                                //update container db with statusMajor, ImageExists, SequenceNum and BatchNum
                                                if (SequenceNum > 0 && BatchNum > 0)
                                                {
                                                    rowsUpdated = m_ContainerDB.Update(Row, StatusMajor, ImageExists, SequenceNum, BatchNum);
                                                }
                                                //update container db with statusMajor, ImageExists and SequenceNum
                                                else if (SequenceNum > 0)
                                                {
                                                    rowsUpdated = m_ContainerDB.UpdateStatusImageAndSeq(Row, StatusMajor, ImageExists, SequenceNum);
                                                }
                                                //update container db with statusMajor, ImageExists and Batch
                                                else if (BatchNum > 0)
                                                {
                                                    rowsUpdated = m_ContainerDB.UpdateStatusImageAndBatch(Row, StatusMajor, ImageExists, BatchNum);
                                                }
                                                ////update container db with statusMajor and ImageExists
                                                else
                                                {
                                                    rowsUpdated = m_ContainerDB.Update(Row, StatusMajor, ImageExists);
                                                }

                                                logger.PrintInfoLine("Container DB updated " + rowsUpdated + " row(s), FlightNumber = " + Row["FlightNumber"] + " ULDNumber = " +
                                                    Row["ULDNumber"]);                                        

                                                DFCMatch = true;
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            logger.PrintInfoLine(ex.Message);
                                        }
                                    }
                                }
                            }
                        }

                        base.m_isDFCMatch = DFCMatch;
                    }                    
                }
            }
            catch (Exception exp)
            {
                throw exp;
            }
        }
コード例 #26
0
ファイル: ACSServer.cs プロジェクト: BdGL3/CXPortal
 private void CaseListTable_RowChanged(object sender, CaseListDataSet.CaseListTableRowChangeEvent e)
 {
     try
     {
         if (e.Action == System.Data.DataRowAction.Add)
         {
             CaseListUpdateEvent(e.Row.CaseId, String.Empty, true);
         }
         else if (e.Action == System.Data.DataRowAction.Delete)
         {
             CaseListUpdateEvent(e.Row.CaseId, String.Empty, false);
         }
     }
     catch
     {
         throw;
     }
 }
コード例 #27
0
        public void SendCaseList(String awsID, CaseList caselist)
        {
            int CaseListCount = caselist.List.CaseListTable.Count;

            int currentRowIndex = 0;

            CaseListDataSet.CaseListTableRow CurrentRow = null;

            if (CaseListCount > 0)
            {
                CurrentRow = (CaseListDataSet.CaseListTableRow)caselist.List.CaseListTable.Rows[currentRowIndex];
            }

            while (CaseListCount > 0)
            {
                CaseListDataSet dataset = new CaseListDataSet();
                int             MaxIndexValue;

                //lock caselist
                lock (caselist.CaseListLock)
                {
                    currentRowIndex = caselist.List.CaseListTable.Rows.IndexOf(CurrentRow);

                    if (CaseListCount > MaxNumCasesPerBatch)
                    {
                        MaxIndexValue = currentRowIndex + MaxNumCasesPerBatch;
                    }
                    else
                    {
                        MaxIndexValue = currentRowIndex + CaseListCount;
                    }

                    for (int i = currentRowIndex; i < MaxIndexValue; i++)
                    {
                        CaseListDataSet.CaseListTableRow row = (CaseListDataSet.CaseListTableRow)caselist.List.CaseListTable.Rows[i];

                        dataset.CaseListTable.AddCaseListTableRow(row.CaseId, row.AnalystComment, row.ObjectId, row.FlightNumber,
                                                                  row.Analyst, row.CaseDirectory, row.ReferenceImage, row.Result,
                                                                  row.UpdateTime, row.Archived, row.AnalysisTime, row.CreateTime, row.Area, row.Image, row.CTI, row.AssignedId, row.DFCMatch);
                    }

                    if (CaseListCount > MaxNumCasesPerBatch)
                    {
                        CaseListCount   = CaseListCount - MaxNumCasesPerBatch;
                        currentRowIndex = currentRowIndex + MaxNumCasesPerBatch;
                        CurrentRow      = (CaseListDataSet.CaseListTableRow)caselist.List.CaseListTable.Rows[currentRowIndex];
                    }
                    else
                    {
                        CaseListCount = CaseListCount - CaseListCount;
                    }

                    //unlock caselist
                }

                try
                {
                    CaseListUpdate listupdate            = new CaseListUpdate(dataset, CaseListUpdateState.Add);
                    ICaseRequestManagerCallback callback = connectionList[awsID];

                    lock (m_UpdateCaseListLock)
                    {
                        callback.UpdatedCaseList(listupdate);
                    }
                }
                catch (Exception exp)
                {
                    if (logger != null)
                    {
                        logger.PrintLine("SendCaseList exp: " + exp);
                    }
                    connectionList.Remove(awsID);
                    break;
                }
            }

            if (logger != null)
            {
                logger.PrintInfoLine("SendCaseList in chunks to " + awsID + " Done.");
            }
        }