forked from Achalaweerasooriya/Target-Process-Plugins
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MashupDto.cs
138 lines (115 loc) · 3.33 KB
/
MashupDto.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//
// Copyright (c) 2005-2011 TargetProcess. All rights reserved.
// TargetProcess proprietary/confidential. Use is subject to license terms. Redistribution of this file is strictly forbidden.
//
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using StructureMap;
using Tp.Integration.Messages;
using Tp.Integration.Messages.PluginLifecycle;
using Tp.Integration.Plugin.Common.Domain;
namespace Tp.MashupManager
{
[DataContract, Serializable]
public class MashupDto
{
public const string PlaceholdersCfgFileName = "placeholders.cfg";
public const string AccountCfgFileName = "account.cfg";
public const string MashupFileName = "mashup.js";
public const string PlaceholdersField = "Placeholders";
public const string ScriptField = "Script";
public const string NameField = "Name";
[DataMember]
public string Name { get; set; }
[DataMember]
public string Placeholders { get; set; }
[DataMember]
public string Script { get; set; }
#region Public methods
public static MashupDto CreateEmptyMashup(string name)
{
return new MashupDto
{
Name = name,
Placeholders = string.Empty,
Script = string.Empty
};
}
public PluginMashupMessage CreatePluginMashupMessage()
{
return CreatePluginMashupMessage(_context.AccountName);
}
public PluginMashupMessage CreatePluginMashupMessage(AccountName accountName)
{
return new PluginMashupMessage
{
MashupName = GetMashupName(accountName),
Placeholders = GetPlaceholders(),
PluginMashupScripts = GetMashupScripts(),
PluginName = string.Empty
};
}
#endregion
#region Private methods
private IPluginContext _context
{
get { return ObjectFactory.GetInstance<IPluginContext>(); }
}
private string GetMashupName(AccountName accountName)
{
return IsAccountEmpty
? Name
: string.Format("{0} {1}", accountName.Value, Name);
}
private bool IsAccountEmpty
{
get { return _context.AccountName == AccountName.Empty; }
}
private string[] GetPlaceholders()
{
return Placeholders.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
}
private PluginMashupScript[] GetMashupScripts()
{
if (string.IsNullOrEmpty(Script))
{
return new PluginMashupScript[] {};
}
var scripts = new List<PluginMashupScript>
{
new PluginMashupScript
{
FileName = MashupFileName,
ScriptContent = Script
}
};
AppendAccountMashupFile(scripts);
return scripts.ToArray();
}
private void AppendAccountMashupFile(List<PluginMashupScript> scripts)
{
if (!IsAccountEmpty)
{
scripts.Add(new PluginMashupScript
{
FileName = AccountCfgFileName,
ScriptContent = string.Format("{0}{1}", MashupConfig.AccountsConfigPrefix, _context.AccountName.Value)
});
}
}
#endregion
}
[DataContract, Serializable]
public class UpdateMashupDto : MashupDto
{
public const string OldNameField = "OldName";
[DataMember]
public string OldName { get; set; }
public bool IsNameChanged()
{
return !Name.Equals(OldName, StringComparison.InvariantCultureIgnoreCase);
}
}
}