/// <summary> /// Parses one row in <see cref="System.Data.Common.DbDataReader"/> into /// a new instance of <see cref="StruSoft.Impact.DB.RawData.RecTransportVehicleStackStd"/>. /// </summary> /// <param name="dataReader">The data reader.</param> /// <param name="record">A new instance of <see cref="StruSoft.Impact.DB.RawData.RecTransportVehicleStackStd"/>.</param> public static RecTransportVehicleStackStd ParseTransportVehicleStackStd( DbDataReader dataReader ) { var record = new RecTransportVehicleStackStd(); record.Factory = record.Factory; record.Project = record.Project; record.Name = DataConverter.Cast<string>( dataReader[0] ); record.StackId = DataConverter.Cast<int>( dataReader[1] ); record.Rack = DataConverter.Cast<string>( dataReader[2] ); record.StackPosition = DataConverter.Cast<int>( dataReader[3] ); record.StackX = DataConverter.Cast<double>( dataReader[4] ); record.StackY = DataConverter.Cast<double>( dataReader[5] ); record.StackZ = DataConverter.Cast<double>( dataReader[6] ); record.StackRotation = DataConverter.Cast<double>( dataReader[7] ); record.Description = DataConverter.Cast<string>( dataReader[8] ); record.StackType = DataConverter.Cast<int>( dataReader[9] ); record.MaxLength = DataConverter.Cast<double>( dataReader[10] ); record.MaxWidth = DataConverter.Cast<double>( dataReader[11] ); record.MaxHeight = DataConverter.Cast<double>( dataReader[12] ); record.MaxMass = DataConverter.Cast<double>( dataReader[13] ); return record; }
/// <summary> /// Load all records of the same factory and project as the supplied record. /// </summary> /// <param name="record">A record with factory and project set.</param> /// <returns>A list of all mathcing records.</returns> public List<RecTransportVehicleStackStd> LoadTransportVehicleStackStd( RecTransportVehicleStackStd record ) { ImpactQuery query = new ImpactQuery() { Select = { ImpTransportVehicleStackStd.Name, ImpTransportVehicleStackStd.StackId, ImpTransportVehicleStackStd.Rack, ImpTransportVehicleStackStd.StackPosition, ImpTransportVehicleStackStd.StackX, ImpTransportVehicleStackStd.StackY, ImpTransportVehicleStackStd.StackZ, ImpTransportVehicleStackStd.StackRotation, ImpTransportVehicleStackStd.Description, ImpTransportVehicleStackStd.StackType, ImpTransportVehicleStackStd.MaxLength, ImpTransportVehicleStackStd.MaxWidth, ImpTransportVehicleStackStd.MaxHeight, ImpTransportVehicleStackStd.MaxMass }, From = { ImpTransportVehicleStackStd.As( "T1" ) }, Where = { ImpTransportVehicleStackStd.Factory.Equal( record.Factory ), ImpTransportVehicleStackStd.Project.Equal( record.Factory ),//for Std use Factory, Factory ImpTransportVehicleStackStd.Name.Equal( record.Name )} }; string statement = query.ToString(); List<RecTransportVehicleStackStd> result; using( ImpactDatabase database = new ImpactDatabase() ) { result = database.GetAll( statement, ParseTransportVehicleStackStd ); } return result; }
/// <summary> /// /// </summary> /// <param name="templates"></param> private void LoadTemplateDetails( List<RecTransport> templates ) { foreach( RecTransport tpl in templates ) { ProjectManager svc = new ProjectManager(); tpl.Vehicles = svc.LoadTransportVehicles( tpl ); // Load vehicle stacks foreach( RecTransportVehicleStd veh in tpl.Vehicles ) { RecTransportVehicleStackStd recStack = new RecTransportVehicleStackStd(); recStack.Factory = veh.Factory; recStack.Project = veh.Project; recStack.Name = veh.Name; veh.Stacks = new ProjectManager().LoadTransportVehicleStackStd( recStack ); if( veh.Stacks.Count == 0 ) { string msg = string.Format( "There are no stacks defined for the standard vehicle \"{0}\" !", veh.Name ); throw new FaultException<BusinessFaultContract>( new BusinessFaultContract() { Argument = msg }, "There are no stacks defined!" ); } } if( tpl.Vehicles.Count == 0 ) { string msg = string.Format( "There are no standard vehicles associated with the transport template \"{0}\" !", tpl.Description ); throw new FaultException<BusinessFaultContract>( new BusinessFaultContract() { Argument = msg }, "The transport temmplate is missing vehicles!" ); } } }
/// <summary> /// Parsing method /// </summary> /// <param name="transport"></param> /// <param name="vehicle"></param> /// <param name="rack"></param> /// <param name="elem"></param> public void Parse( RecTransport transport, RecTransportVehicleStd vehicle, RecTransportVehicleStackStd stack, RecTMElement elem ) { string transpKey = transport.Factory + transport.Project + transport.TransportId; RecTMVehicle vehObj = null; RecTMStack stackObj = null; RecTMTransport transpObj = null; if( dic.ContainsKey( transpKey ) ) { transpObj = dic[transpKey]; } else { transpObj = new RecTMTransport(); dic.Add( transpKey, transpObj ); tmList.Add( transpObj ); } transpObj.TransportObject = transport; bool isVehicleMode = vehicle.VehicleId != 0; if( isVehicleMode || transpObj.Vehicles.Count > 0 ) { vehObj = transpObj.FindVehicle( vehicle ); if( vehObj == null ) { vehObj = new RecTMVehicle(); transpObj.AddVehicle( vehObj ); } vehObj.TransportVehicleStdObject = vehicle; if( stack.StackId != 0 ) { stackObj = vehObj.FindStack( stack ); if( stackObj == null ) { stackObj = new RecTMStack(); vehObj.AddStack( stackObj ); } stackObj.TransportVehicleStackStdObject = stack; // To be revised!!!!!!!!!!! rackObj.TransportVehicleStackStdObject = stack; } } // Save the element if we do have an element if( elem.ElementId > 0 ) { if( stackObj != null ) { stackObj.TMElements.Add( elem ); } else if( vehObj != null ) { vehObj.TMElements.Add( elem ); } else { transpObj.TMElements.Add( elem ); } } }
/// <summary> /// Delete of Transport Vehicle Standard items /// </summary> /// <param name="vehicle"></param> /// <returns></returns> public int DeleteTransportVehicleStd( RecTransportVehicleStd record ) { if( record == null ) { throw new ArgumentNullException( "TransportVehicleStd" ); } // Delete underlying std stacks ProjectManager svc = new ProjectManager(); RecTransportVehicleStackStd stack = new RecTransportVehicleStackStd() { Factory = record.Factory, Project = record.Project, Name = record.Name, }; svc.DeleteTransportVehicleStackStd( stack ); // Now delete the std veh var delete = new ImpactDelete( ImpTransportVehicleStd.Instance ) { Where = { { ImpTransportVehicleStd.Factory.Equal( record.Factory )}, { ImpTransportVehicleStd.Project.Equal( record.Factory )},//for Std use Factory, Factory { ImpTransportVehicleStd.Name.Equal( record.Name )}, } }; string statement = delete.ToString(); int result; using( ImpactDatabase database = new ImpactDatabase() ) { result = database.ExecuteNonQuery( statement ); } return result; }
public TMStack( RecTransportVehicleStackStd stack ) { TransportVehicleStackStdObject = stack; }
/// <summary> /// Returns max value of transport_id /// </summary> /// <param name="transport"></param> /// <returns></returns> public int GetMaxStacktId( RecTransportVehicleStackStd record ) { if( record == null ) { throw new ArgumentNullException( "Transport" ); } int ret = 0; using( ImpactDatabase database = new ImpactDatabase() ) { ImpactQuery query = new ImpactQuery() { Select = { Aggregate.Max(ImpTransportStack.StackId) }, From = { ImpTransportStack.As( "T1" ) }, Where = { ImpTransportStack.Factory.Equal( record.Factory ), // Per factory, project only! ImpTransportStack.Project.Equal( record.Project ), ImpTransportStack.StackId.GreaterThan( 0 )}, }; string statement = query.ToString(); List<int> result = null; try { result = database.GetAll( statement, column => { return DataConverter.Cast<int?>( column[0] ) ?? 0; } ); ret = result[0]; } catch( Exception ) { }//Just eat it please! } return ret; }
/// <summary> /// Delete the specified record from the database. /// </summary> /// <param name="record">The record to delete from the database.</param> /// <returns>The number of affected records.</returns> public int DeleteTransportVehicleStack( RecTransportVehicleStackStd record ) { var delete = new ImpactDelete( ImpTransportStack.Instance ) { Where = { { ImpTransportStack.Factory.Equal( record.Factory )}, { ImpTransportStack.Project.Equal( record.Project )}, { ImpTransportStack.TransportId.Equal( record.TransportId )}, { ImpTransportStack.VehicleId.Equal( record.VehicleId )}, { ImpTransportStack.StackId.Equal( record.StackId )}, } }; string statement = delete.ToString(); int result; using( ImpactDatabase database = new ImpactDatabase() ) { result = database.ExecuteNonQuery( statement ); } return result; }
/// <summary> /// Insert the specified record into the database. /// Actually we copy std stack info into a new db-record /// </summary> /// <param name="record">The record to insert into the database.</param> /// <returns>The number of affected records.</returns> public int InsertTransportVehicleStack( RecTransportVehicleStackStd record ) { // !!! Sorry, NumberGenerator is not used for this Id !!! //NumberGenerator ng = new NumberGenerator(); //string company = NumberGenerator.GetCompany( record.Factory ); //record.StackId = ng.GetNextNumber( company, company, RecNumberGenerator.CMP_NG_STACK_ID ); //Now let's use the slow, unsecure and bad unique id's using max, what a mess :( record.StackId = GetMaxStacktId( record ) + 1; var insert = new ImpactInsert( ImpTransportStack.Instance ) { Columns = { { ImpTransportStack.Factory, record.Factory }, { ImpTransportStack.Project, record.Project }, { ImpTransportStack.TransportId, record.TransportId }, { ImpTransportStack.VehicleId, record.VehicleId }, { ImpTransportStack.StackId, record.StackId }, { ImpTransportStack.Rack, record.Rack }, { ImpTransportStack.StackX, record.StackX }, { ImpTransportStack.StackY, record.StackY }, { ImpTransportStack.StackZ, record.StackZ }, { ImpTransportStack.StackRotation, record.StackRotation }, { ImpTransportStack.Description, record.Description }, { ImpTransportStack.StackType, record.StackType }, { ImpTransportStack.StackPosition, record.StackPosition }, { ImpTransportStack.MaxLength, record.MaxLength }, { ImpTransportStack.MaxWidth, record.MaxWidth }, { ImpTransportStack.MaxHeight, record.MaxHeight }, { ImpTransportStack.MaxMass, record.MaxMass }, } }; string statement = insert.ToString(); int result; using( ImpactDatabase database = new ImpactDatabase() ) { result = database.ExecuteNonQuery( statement ); } return record.StackId; }
/// <summary> /// Update the specified record in the database. /// </summary> /// <param name="record">The record to update.</param> /// <returns></returns> public int UpdateTransportVehicleStackStd( RecTransportVehicleStackStd record ) { var update = new ImpactUpdate( ImpTransportVehicleStackStd.Instance ) { Columns = { { ImpTransportVehicleStackStd.Rack, record.Rack }, { ImpTransportVehicleStackStd.StackPosition, record.StackPosition }, { ImpTransportVehicleStackStd.StackX, record.StackX }, { ImpTransportVehicleStackStd.StackY, record.StackY }, { ImpTransportVehicleStackStd.StackZ, record.StackZ }, { ImpTransportVehicleStackStd.StackRotation, record.StackRotation }, { ImpTransportVehicleStackStd.Description, record.Description }, { ImpTransportVehicleStackStd.StackType, record.StackType }, { ImpTransportVehicleStackStd.MaxLength, record.MaxLength }, { ImpTransportVehicleStackStd.MaxWidth, record.MaxWidth }, { ImpTransportVehicleStackStd.MaxHeight, record.MaxHeight }, { ImpTransportVehicleStackStd.MaxMass, record.MaxMass }, }, Where = { { ImpTransportVehicleStackStd.Factory.Equal( record.Factory ) }, { ImpTransportVehicleStackStd.Project.Equal( record.Factory ) },//for Std use Factory, Factory { ImpTransportVehicleStackStd.Name.Equal( record.Name ) }, { ImpTransportVehicleStackStd.StackId.Equal( record.StackId ) }, }, }; string statement = update.ToString(); int result; using( ImpactDatabase database = new ImpactDatabase() ) { result = database.ExecuteNonQuery( statement ); } return result; }
/// <summary> /// Delete the specified record from the database. /// </summary> /// <param name="record">The record to delete from the database.</param> /// <returns>The number of affected records.</returns> public int DeleteTransportVehicleStackStd( RecTransportVehicleStackStd record ) { ImpactDelete delete = null; if( record.StackId > 0 ) { delete = new ImpactDelete( ImpTransportVehicleStackStd.Instance ) { Where = { { ImpTransportVehicleStackStd.Factory.Equal( record.Factory )}, { ImpTransportVehicleStackStd.Project.Equal( record.Factory )},//for Std use Factory, Factory { ImpTransportVehicleStackStd.Name.Equal( record.Name )}, { ImpTransportVehicleStackStd.StackId.Equal( record.StackId )}, } }; } else { delete = new ImpactDelete( ImpTransportVehicleStackStd.Instance ) { Where = { { ImpTransportVehicleStackStd.Factory.Equal( record.Factory )}, { ImpTransportVehicleStackStd.Project.Equal( record.Factory )},//for Std use Factory, Factory { ImpTransportVehicleStackStd.Name.Equal( record.Name )}, } }; } string statement = delete.ToString(); int result; using( ImpactDatabase database = new ImpactDatabase() ) { result = database.ExecuteNonQuery( statement ); } return result; }
/// <summary> /// Insert the specified record into the database. /// </summary> /// <param name="record">The record to insert into the database.</param> /// <returns>The number of affected records.</returns> public int InsertTransportVehicleStackStd( RecTransportVehicleStackStd record ) { ProjectManager ng = new ProjectManager(); string company = ProjectManager.GetCompany( record.Factory ); record.StackId = ng.GetNextNumber( company, company, RecNumberGenerator.CMP_NG_STACK_ID ); var insert = new ImpactInsert( ImpTransportVehicleStackStd.Instance ) { Columns = { { ImpTransportVehicleStackStd.Factory, record.Factory }, { ImpTransportVehicleStackStd.Project, record.Factory }, //Std use, Factory, Factory { ImpTransportVehicleStackStd.Name, record.Name }, { ImpTransportVehicleStackStd.StackId, record.StackId }, { ImpTransportVehicleStackStd.Rack, record.Rack }, { ImpTransportVehicleStackStd.StackPosition, record.StackPosition }, { ImpTransportVehicleStackStd.StackX, record.StackX }, { ImpTransportVehicleStackStd.StackY, record.StackY }, { ImpTransportVehicleStackStd.StackZ, record.StackZ }, { ImpTransportVehicleStackStd.StackRotation, record.StackRotation }, { ImpTransportVehicleStackStd.Description, record.Description }, { ImpTransportVehicleStackStd.StackType, record.StackType }, { ImpTransportVehicleStackStd.MaxLength, record.MaxLength }, { ImpTransportVehicleStackStd.MaxWidth, record.MaxWidth }, { ImpTransportVehicleStackStd.MaxHeight, record.MaxHeight }, { ImpTransportVehicleStackStd.MaxMass, record.MaxMass }, } }; string statement = insert.ToString(); int result; using( ImpactDatabase database = new ImpactDatabase() ) { result = database.ExecuteNonQuery( statement ); } return result; }