Прототип информационно – аналитической системы MCControl для поддержки процесса техобслуживания и ремонта дискретного производства малого производственного предприятия (ТОиР).
1. Класс «Repository» управляющий объектами в базе данных
using System;
using System.Collections.Generic;
using System.Linq;
using BDE.Client.Shared.Common.Logic.Persistence;
using BDE.Shared.Common.Domain;
using BDE.Shared.Utils;
using Microsoft.Practices.Unity;
namespace BDE.Client.Shared.Common.Logic
{
public interface IRepository<T> : IReadRepository<T>, IAsyncDomainStore<T>
where T : DomainObject
{
T CreateNew();
}
/// <summary>
/// Caching repository wrapping <see cref="IAsyncDomainStore{T}" />
/// </summary>
public class Repository<T>: ReadOnlyBaseRepository<T>, IRepository<T>
where T : DomainObject
{
[Dependency]
public IAsyncDomainStore<T> WrappedStore
{
private get { return (IAsyncDomainStore<T>)Store; }
set { Store = value; }
}
public virtual T CreateNew()
{
return ObjectCloneHelper.CreateProxy<T>();
}
#region IDomainPersistenceStore<T> Members
#region Async save methods
public virtual IAsyncResult BeginSaveObject(T obj, AsyncCallback saveCompletedCallback, object state)
{
T clone = ObjectCloneHelper.CloneReal(obj);
clone.TrimStringProperties();
return WrappedStore.BeginSaveObject(clone, saveCompletedCallback, state);
}
public T EndSaveObject(IAsyncResult asyncResult)
{
T result = (T)ObjectCloneHelper.CloneProxy(WrappedStore.EndSaveObject(asyncResult));
var cachedResult = AddToCache(result);
OnSaveObjectCompleted(cachedResult);
return cachedResult;
}
protected virtual void OnSaveObjectCompleted(T obj)
{
}
/// <summary>
/// Begins asynchronous group save operation on set of object of type <typeparamref name="T" />
/// </summary>
public virtual IAsyncResult BeginSaveObjects(IEnumerable<T> objs, AsyncCallback saveCompletedCallback, object state)
{
List<T> realObjs = objs
.Select(obj => (T)ObjectCloneHelper.CloneReal(obj))
|
|
.Do(obj => obj.TrimStringProperties())
.ToList();
return WrappedStore.BeginSaveObjects(realObjs, saveCompletedCallback, state);
}
/// <summary>
/// Ends initiated asynchronous group save operation
/// </summary>
public IList<T> EndSaveObjects(IAsyncResult asyncResult)
{
IList<T> originalCollection = WrappedStore.EndSaveObjects(asyncResult);
foreach(T obj in originalCollection)
{
OnSaveObjectCompleted(obj);
}
return originalCollection.Select(obj => (T)ObjectCloneHelper.CloneProxy(obj)).Select(AddToCache).ToList();
}
#endregion
#region Async delete methods
public IAsyncResult BeginDeleteObject(ObjectKey key, AsyncCallback deleteCompletedCallback, object state)
{
return WrappedStore.BeginDeleteObject(key, deleteCompletedCallback, state);
}
public ObjectKey EndDeleteObject(IAsyncResult asyncResult)
{
ObjectKey result = WrappedStore.EndDeleteObject(asyncResult);
RemoveFromCache(result);
return result;
}
public IAsyncResult BeginDeleteObjects(IEnumerable<ObjectKey> keys, AsyncCallback saveCompletedCallback, object state)
{
return WrappedStore.BeginDeleteObjects(keys, saveCompletedCallback, state);
}
public IList<ObjectKey> EndDeleteObjects(IAsyncResult asyncResult)
{
IList<ObjectKey> result = WrappedStore.EndDeleteObjects(asyncResult);
foreach (var key in result)
{
RemoveFromCache(key);
}
return result;
}
public IAsyncResult BeginDeleteObjectsByParamInfo(ParamInfoBase paramInfo, AsyncCallback deleteCompliteCallback, object state)
|
|
{
return WrappedStore.BeginDeleteObjectsByParamInfo(paramInfo, deleteCompliteCallback, state);
}
public IList<ObjectKey> EndDeleteObjectsByParamInfo(IAsyncResult asyncResult)
{
return WrappedStore.EndDeleteObjectsByParamInfo(asyncResult);
}
#endregion
#endregion
}
}
2. Основное окно приложения, описанное на языке разметки xaml.
<Window x:Class="BDE.Client.WPF.PROtool.View.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Title}"
Icon="/BDE.Client.WPF.PROtool.View;component/Resources/Images/PROtoolIcon.png"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:helpers="clr-namespace:BDE.Client.WPF.PROtool.View.Helpers"
xmlns:viewModelMapping="http://schemas.dmdevelopment.ru/view/viewModelMapping/"
xmlns:viewBehavior="http://schemas.dmdevelopment.ru/view/behavior/"
xmlns:controls="http://schemas.dmdevelopment.ru/controls/"
xmlns:view="http://schemas.dmdevelopment.ru/view"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:controlsConvert="http://schemas.dmdevelopment.ru/controls/convert/"
>
<Window.Resources>
<helpers:ResourceHelper x:Key="ResourceHelper" />
<view:ViewModelContextTabConverter x:Key="ViewModelContextTabConverter" />
<controlsConvert:EnumerableToCollectionView x:Key="EnumerableToCollectionViewConverter" />
<view:RibbonButtonVisibilityConverter x:Key="RibbonButtonVisibilityConverter" />
</Window.Resources>
<telerik:RadBusyIndicator IsBusy="{Binding IsAsyncOperationInProgress}" BusyContent="{Binding Resources.MainView_ServerOperationInProgressText, Source={StaticResource ResourceHelper}}">
|
|
<DockPanel>
<controls:ContextedRibbonBar x:Name="Ribbon" ApplicationButtonVisibility="Collapsed"
CollapseThresholdSize="Empty"
Context="{Binding TabViewModelManager.SelectedViewModel, Converter={StaticResource ViewModelContextTabConverter}}"
TitleBarVisibility="Collapsed" DockPanel.Dock="Top">
<controls:ContextedRibbonBar.TabStripAdditionalContent>
<StackPanel Orientation="Horizontal">
<TextBlock Margin="0,0,4,0" Text="{Binding CurrentUserName}" VerticalAlignment="Center" />
<telerik:RadRibbonButton Content="{Binding Resources.MainView_LogoutText, Source={StaticResource ResourceHelper}}"
Command="{Binding LogoutCommand}" VerticalAlignment="Center"/>
</StackPanel>
</controls:ContextedRibbonBar.TabStripAdditionalContent>
<telerik:RadRibbonTab Header="{Binding Resources.MainView_MasterDataTabHeader, Source={StaticResource ResourceHelper}}">
<telerik:RadRibbonGroup Header="{Binding Resources.MainView_DataGroupHeader, Source={StaticResource ResourceHelper}}">
<telerik:RadRibbonButton Command="{Binding OpenCustomersGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_CustomersButtonText, Source={StaticResource ResourceHelper}}"
|
|
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/CustomerIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenDocumentsGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_DocumentsButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/DocumentIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenToolsGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolsButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenModelsGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ModelsButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ModelIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenToolMachinesGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolMachinesButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolMachineIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenMaintenancePlansGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_MaintenancePlansButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/MaintenancePlanIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenRepairsGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_RepairsButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/RepairIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenRepairGroundGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_RepairGroundsButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/RepairGroundIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenToolStatusGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolStatusesButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolStatusIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenToolmakerGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolmakersButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolmakerIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenItemGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ItemsButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ItemIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenPeripheryGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_PeripheriesButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/PeripheryIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<telerik:RadRibbonButton Command="{Binding OpenToolTypeGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolTypesButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolTypeIcon.png"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />
<i:Interaction.Behaviors>
<viewBehavior:RibbonGroupVisibilityBehavior />
</i:Interaction.Behaviors>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="{Binding Resources.MainView_HelpGroupHeader, Source={StaticResource ResourceHelper}}">
<!--<telerik:RadRibbonButton Command="{Binding OpenSystemInfoTabCommand}" Size="Large" Text="{Binding Resources.MainView_SystemInfoButtonText, Source={StaticResource ResourceHelper}}"
Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.Administration' }"
LargeImage="/BDE.Client.Shared.Common.View;component/Resources/Images/Report2.png"/>-->
<telerik:RadRibbonButton Command="{Binding OpenAboutCommand}" Size="Large" Text="{Binding Resources.MainView_AboutButtonText, Source={StaticResource ResourceHelper}}"
LargeImage="/BDE.Client.Shared.Common.View;component/Resources/Images/Info_001.png"/>
<i:Interaction.Behaviors>
<viewBehavior:RibbonGroupVisibilityBehavior />
</i:Interaction.Behaviors>
</telerik:RadRibbonGroup>
</telerik:RadRibbonTab>
</controls:ContextedRibbonBar>
<telerik:RadTabControl Align="Right" TabStripPlacement="Left" ItemsSource="{Binding TabViewModelManager.ViewModels}"
SelectedItem="{Binding TabViewModelManager.SelectedViewModel, Mode=TwoWay}" TabOrientation="Vertical">
<telerik:RadTabControl.ItemContainerStyle>
<Style TargetType="telerik:RadTabItem">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<viewModelMapping:ViewModelPresenter ViewModel="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<telerik:RadRibbonButton Command="{Binding CloseTabCommand}"
SmallImage="/BDE.Client.Shared.Common.View;component/Resources/Images/errorMessage.png"
Grid.Column="0" />
<ContentPresenter Content="{Binding Title}" VerticalAlignment="Center" Grid.Column="1" />
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</telerik:RadTabControl.ItemContainerStyle>
</telerik:RadTabControl>
</DockPanel>
</telerik:RadBusyIndicator>
</Window>
3. Окно входа в программу.
Окно входа в программу (рисунок 1)
Заключение
В ходе курсового проектирования были сформированы умения и получены навыки разработки программного обеспечения, работы с паттернами проектирования.
Были выполнены все задания курсового проектирования:
– получены навыки работы в программных пакетах Microsoft Visual Studio 2012, Microsoft SQL Server 2012, VisualHG;
– получены навыки работы с некоторыми шаблонами проектирования;
– разработан прототип информационно-аналитической системы;
– оформлена пояснительная записка и документация по курсовому проекту.
Список использованных источников
1 Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес Приемы объектно-ориентированного проектирования. Паттерны проектирования. – СПб: «Питер», 2007. — С. 366. — ISBN 978-5-469-01136-1
2 Стив Макконнелл Совершенный код. — СПб.: Питер, 2005. — С. 896. — ISBN 5-7502-0064-7
3 http://ru.wikipedia.org/
4 http://msdn.microsoft.com/
Дата добавления: 2020-12-12; просмотров: 38; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!