Skip to content

Commit

Permalink
added RestService, fixed Unittests, changed BL Functions, fixed Conve…
Browse files Browse the repository at this point in the history
…rtFunctions
  • Loading branch information
MasterLindi committed Nov 27, 2012
1 parent ed2bec4 commit 0235507
Show file tree
Hide file tree
Showing 68 changed files with 17,602 additions and 350 deletions.
7 changes: 4 additions & 3 deletions BLInterfaces/Heli.Scada.BLInterfaces.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
<ProjectGuid>{AC429C89-6FFE-42B8-A518-751184008361}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BLInterfaces</RootNamespace>
<AssemblyName>BLInterfaces</AssemblyName>
<RootNamespace>Heli.Scada.BLInterfaces</RootNamespace>
<AssemblyName>Heli.Scada.BLInterfaces</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
Expand Down Expand Up @@ -41,7 +41,8 @@
<ItemGroup>
<Compile Include="ICustomerBL.cs" />
<Compile Include="IEngineerBL.cs" />
<Compile Include="IHelperfunctions.cs" />
<Compile Include="IRestServiceBL.cs" />
<Compile Include="IStatisticService.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
Expand Down
6 changes: 4 additions & 2 deletions BLInterfaces/ICustomerBL.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ namespace Heli.Scada.BLInterfaces
{
public interface ICustomerBL
{
List<Installationstate> showMyCustomersInstallationState(int customerid);
List<Statistic> showMyCustomersStatistics(int customerid, int option);
void createCustomer(CustomerModel customer);
CustomerModel getCustomer(int id);
List<InstallationModel> getInstallations(CustomerModel customer);

}
}
1 change: 0 additions & 1 deletion BLInterfaces/IEngineerBL.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ namespace Heli.Scada.BLInterfaces
public interface IEngineerBL
{
void createCustomer(CustomerModel customer, InstallationModel installation);
Dictionary<CustomerModel, List<Installationstate>> showMyCustomersInstallationState(int engineerid);
List<CustomerModel> showMyCustomers(int engineerid);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@

namespace Heli.Scada.BLInterfaces
{
public interface IHelperfunctions
public interface IRestServiceBL
{
List<Statistic> getStatistics(CustomerModel customer, int option);
List<Installationstate> getInstallationState(CustomerModel customer);
void createMeasurement(MeasurementModel measurement);
}
}
17 changes: 17 additions & 0 deletions BLInterfaces/IStatisticService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Heli.Scada.Entities;

namespace Heli.Scada.BLInterfaces
{
public interface IStatisticService
{
Dictionary<InstallationModel, List<Statistic>> getStatisticPerDay(int customerid, DateTime date);
Dictionary<InstallationModel, List<Statistic>> getStatisticPerMonth(int customerid, DateTime date);
Dictionary<InstallationModel, List<Statistic>> getStatisticPerYear(int customerid, DateTime date);
Dictionary<InstallationModel, List<InstallationState>> getInstallationState(int customerid);
}
}
44 changes: 44 additions & 0 deletions DBHandler/App.Config
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<connectionStrings>
<add name="MesswerteEntities1" connectionString="metadata=res://*/DBMesswerte.csdl|res://*/DBMesswerte.ssdl|res://*/DBMesswerte.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MYSNWIN7\SQLEXPRESS;initial catalog=Messwerte;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>
Expand All @@ -27,4 +28,47 @@
</layout>
</appender>
</log4net>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">

<alias alias="ICustomerRepository" type="Heli.Scada.DalInterfaces.ICustomerRepository`1, Heli.Scada.DalInterfaces" />
<alias alias="IEngineerRepository" type="Heli.Scada.DalInterfaces.IEngineerRepository`1, Heli.Scada.DalInterfaces" />
<alias alias="IInstallationRepository" type="Heli.Scada.DalInterfaces.IInstallationRepository`1, Heli.Scada.DalInterfaces" />
<alias alias="IMeasurementRepository" type="Heli.Scada.DalInterfaces.IMeasurementRepository`1, Heli.Scada.DalInterfaces" />
<alias alias="IMeasurementTypeRepository" type="Heli.Scada.DalInterfaces.IMeasurementTypeRepository`1, Heli.Scada.DalInterfaces" />

<alias alias="CustomerRepository" type="Heli.Scada.dal.CustomerRepository, Heli.Scada.dal" />
<alias alias="EngineerRepository" type="Heli.Scada.dal.EngineerRepository, Heli.Scada.dal" />
<alias alias="InstallationRepository" type="Heli.Scada.dal.InstallationRepository, Heli.Scada.dal" />
<alias alias="MeasurementRepository" type="Heli.Scada.dal.MeasurementRepository, Heli.Scada.dal" />
<alias alias="MeasurementTypeRepository" type="Heli.Scada.dal.MeasurementTypeRepository, Heli.Scada.dal" />

<alias alias="ICustomerBL" type="Heli.Scada.BLInterfaces.ICustomerBL, Heli.Scada.BLInterfaces" />
<alias alias="IEngineerBL" type="Heli.Scada.BLInterfaces.IEngineerBL, Heli.Scada.BLInterfaces" />
<alias alias="IStatisticService" type="Heli.Scada.BLInterfaces.IStatisticService, Heli.Scada.BLInterfaces" />
<alias alias="IRestServiceBL" type="Heli.Scada.BLInterfaces.IRestServiceBL, Heli.Scada.BLInterfaces" />

<alias alias="CustomerBL" type="Heli.Scada.BL.CustomerBL, Heli.Scada.BL" />
<alias alias="EngineerBL" type="Heli.Scada.BL.EngineerBL, Heli.Scada.BL" />
<alias alias="StatisticService" type="Heli.Scada.BL.StatisticService, Heli.Scada.BL" />
<alias alias="RestServiceBL" type ="Heli.Scada.BL.RestServiceBL, Heli.Scada.BL" />

<alias alias="CustomerModel" type="Heli.Scada.Entities.CustomerModel, Heli.Scada.Entities" />
<alias alias="EngineerModel" type="Heli.Scada.Entities.EngineerModel, Heli.Scada.Entities" />
<alias alias="InstallationModel" type="Heli.Scada.Entities.InstallationModel, Heli.Scada.Entities" />
<alias alias="MeasurementModel" type="Heli.Scada.Entities.MeasurementModel, Heli.Scada.Entities" />
<alias alias="MeasurementTypeModel" type="Heli.Scada.Entities.MeasurementTypeModel, Heli.Scada.Entities" />
<container>

<register type="ICustomerRepository[CustomerModel]" mapTo="CustomerRepository" />
<register type="IEngineerRepository[EngineerModel]" mapTo="EngineerRepository" />
<register type="IInstallationRepository[InstallationModel]" mapTo="InstallationRepository" />
<register type="IMeasurementRepository[MeasurementModel]" mapTo="MeasurementRepository" />
<register type="IMeasurementTypeRepository[MeasurementTypeModel]" mapTo="MeasurementTypeRepository" />

<register type="ICustomerBL" mapTo="CustomerBL" />
<register type="IEngineerBL" mapTo="EngineerBL" />
<register type="IStatisticService" mapTo="StatisticService" />
<register type="IRestServiceBL" mapTo="RestServiceBL" />
</container>
</unity>
</configuration>
5 changes: 5 additions & 0 deletions DBHandler/DBHandler.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@
<Reference Include="EntityFramework">
<HintPath>..\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\log4net.2.0.0\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.EnterpriseLibrary.Common">
<HintPath>..\packages\EnterpriseLibrary.Common.5.0.505.0\lib\NET35\Microsoft.Practices.EnterpriseLibrary.Common.dll</HintPath>
</Reference>
Expand All @@ -58,6 +62,7 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Data.Entity" />
<Reference Include="System.Xml.Linq" />
Expand Down
66 changes: 41 additions & 25 deletions DBHandler/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,52 +3,68 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Heli.Scada.dal;
using Heli.Scada.Entities;
using Heli.Scada.BL;
using log4net;
using Heli.Scada.BLInterfaces;
using System.Configuration;
using Microsoft.Practices.Unity;
using Heli.Scada.DalInterfaces;
using Microsoft.Practices.Unity.Configuration;

namespace DBHandler
{
class Program
{

public static readonly ILog log = LogManager.GetLogger(typeof(Program));

static void Main(string[] args)
{

EngineerRepository erepo = new EngineerRepository(new MesswerteEntities1());
CustomerRepository crepo = new CustomerRepository();

CustomerModel customer = new CustomerModel();
Engineer teste = new Engineer();


customer = crepo.GetById(2);
log4net.Config.XmlConfigurator.Configure();

UnityContainer hfcontainer = new UnityContainer();
hfcontainer.RegisterType<IInstallationRepository<InstallationModel>, InstallationRepository>();
hfcontainer.RegisterType<IMeasurementRepository<MeasurementModel>, MeasurementRepository>();
hfcontainer.RegisterType<IRepository<MeasurementTypeModel>, MeasurementTypeRepository>();
IUnityContainer container = new UnityContainer();
UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(container);

HelperFunctions hfunctions = hfcontainer.Resolve<HelperFunctions>();
IStatisticService sservice = container.Resolve<IStatisticService>();

UnityContainer cblcontainer = new UnityContainer();
cblcontainer.RegisterType<IRepository<CustomerModel>, CustomerRepository>();
cblcontainer.RegisterInstance<HelperFunctions>(hfunctions);


CustomerBL cbl = cblcontainer.Resolve<CustomerBL>();
ICustomerBL cbl = container.Resolve<ICustomerBL>();

List<Statistic> slist = cbl.showMyCustomersStatistics(1, 0);
Dictionary<InstallationModel, List<Statistic>> slist = sservice.getStatisticPerYear(1, DateTime.Now);
/*crepo.Delete(crepo.GetById(0));
crepo.Save();
erepo.Delete(erepo.GetById(0));
erepo.Save();*/

foreach (var item in crepo.GetAll())

Dictionary<InstallationModel, List<InstallationState>> ilist = sservice.getInstallationState(1);

foreach (var item in ilist)
{
Console.WriteLine("Name: " + item.username + " Email: " + item.email);
Console.WriteLine("Listenlänge: " + slist.Count);
Console.WriteLine("Installation: " + item.Key.installationid);
foreach (var states in item.Value)
{
Console.WriteLine("lastvalue: " + states.lastValue);
Console.WriteLine("currentTime: " + states.currentTime);
Console.WriteLine("unit: " + states.unit);
Console.WriteLine("description: " + states.description);
}
}

/* foreach (var item in slist)
{
Console.WriteLine("Installation: " + item.Key.installationid);
foreach (var stats in item.Value)
{
Console.WriteLine("average: " + stats.average );
Console.WriteLine("minvalue: " + stats.minvalue);
Console.WriteLine("maxvalue: " + stats.maxvalue);
Console.WriteLine("unit: " + stats.unit);
Console.WriteLine("description: " + stats.description);
}
}*/
Console.ReadLine();
}
}
Expand Down
1 change: 1 addition & 0 deletions DBHandler/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<package id="EnterpriseLibrary.Common" version="5.0.505.0" targetFramework="net45" />
<package id="EnterpriseLibrary.Validation" version="5.0.505.0" targetFramework="net45" />
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
<package id="log4net" version="2.0.0" targetFramework="net45" />
<package id="Unity" version="2.1.505.2" targetFramework="net45" />
<package id="Unity.Interception" version="2.1.505.2" targetFramework="net45" />
</packages>
98 changes: 56 additions & 42 deletions Heli.Scada.BL/CustomerBL.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,72 +16,86 @@

namespace Heli.Scada.BL
{
public class CustomerBL: ICustomerBL
public class CustomerBL : ICustomerBL
{
IRepository<CustomerModel> crepo;
HelperFunctions hfunction;
ICustomerRepository<CustomerModel> crepo;
IInstallationRepository<InstallationModel> irepo;

public static readonly ILog log = LogManager.GetLogger(typeof(CustomerBL));

public CustomerBL(IRepository<CustomerModel> crepo, HelperFunctions hfunction)
public CustomerBL(ICustomerRepository<CustomerModel> crepo, IInstallationRepository<InstallationModel> irepo)
{
this.crepo = crepo;
this.hfunction = hfunction;
log4net.Config.XmlConfigurator.Configure();
this.irepo = irepo;
}

public List<Installationstate> showMyCustomersInstallationState(int customerid)
{
List<Installationstate> ilist = null;
public void createCustomer(CustomerModel customer)
{
try
{
Validator<int> cidvalidator = new RangeValidator<int>(0,Int32.MaxValue);
ValidationResults vresult = cidvalidator.Validate(customerid);
if (!vresult.IsValid)
ValidationResults vresult = Validation.ValidateFromAttributes<CustomerModel>(customer);
if (vresult.IsValid)
{
crepo.Add(customer);
crepo.Save();
log.Info("Customer saved");
}
else
{
log.Warn("Customerid muss positiv sein.");
throw new BLException("Customerid muss positiv sein.");
log.Warn(vresult.Count + "Validation errors");
StringBuilder sb = null;
foreach (var error in vresult)
{
sb = new StringBuilder();
sb.Append("Error on property ");
sb.Append(error.Target);
sb.Append(": ");
sb.Append(error.Message);
}
log.Warn(sb);
}
ilist= new List<Installationstate>();
ilist = hfunction.getInstallationState(crepo.GetById(customerid));
log.Info("Anlagenzustände der Kunden wurden abgerufen");
}
catch (DalException exp)
catch(DalException exp)
{
log.Error("Anlagenzustände der Kunden konnten nicht geladen werden.");
throw new BLException("Anlagenzustände der Kunden konnten nicht abgerufen werden.", exp);
log.Error("cannot save customer!", exp);
throw new BLException("cannot save customer!", exp);
}

return ilist;
}

public List<Statistic> showMyCustomersStatistics(int customerid, int option)
public CustomerModel getCustomer(int id)
{
List<Statistic> slist = null;
Validator<int> cidvalidator = new RangeValidator<int>(0,RangeBoundaryType.Inclusive, Int32.MaxValue, RangeBoundaryType.Exclusive, "Customerid muss positiv sein.");
Validator<int> optvalidator = new RangeValidator<int>(0,RangeBoundaryType.Inclusive, 2, RangeBoundaryType.Inclusive, "Option muss 0-2 sein!" );
ValidationResults vresult = cidvalidator.Validate(customerid);
vresult.AddAllResults(optvalidator.Validate(option));
if (!vresult.IsValid)
CustomerModel tmp;
try
{
foreach (var item in vresult)
{
log.Warn(item.Message);
throw new BLException(item.Message);
}
log.Info("Fetching customer id" + id);
tmp = crepo.GetById(id);

}
catch(DalException err)
{
log.Warn("Cannot fetch customer id " + id, err);
throw new BLException("Cannot fetch customer", err);
}
return tmp;
}

public List<InstallationModel> getInstallations(CustomerModel customer)
{
List<InstallationModel> tmp;
try
{
slist = new List<Statistic>();
slist = hfunction.getStatistics(crepo.GetById(customerid), option);
log.Info("Statistiken der Kunden wurden abgerufen");
log.Info("Fetching Installation from customer id" + customer.customerid);
tmp = irepo.GetByCustomerId(customer.customerid);
}
catch (DalException exp)
catch(DalException exp)
{
log.Error("Statistiken der Kunden konnten nicht abgerufen werden.");
throw new BLException("Statistiken der Kunden konnten nicht abgerufen werden.", exp);
log.Error("Cannot fetch Installations from customer id " + customer.customerid, exp);
throw new BLException("Cannot fetch Installations from customer id " + customer.customerid, exp);
}
return slist;
return tmp;

}


}
}
Loading

0 comments on commit 0235507

Please sign in to comment.