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 package fr.paris.lutece.plugins.deployment.service;
35
36 import fr.paris.lutece.plugins.deployment.business.Application;
37 import fr.paris.lutece.plugins.deployment.business.Environment;
38 import fr.paris.lutece.plugins.deployment.business.FtpInfo;
39 import fr.paris.lutece.plugins.deployment.business.IAction;
40 import fr.paris.lutece.plugins.deployment.business.ServerApplicationInstance;
41 import fr.paris.lutece.plugins.deployment.util.ConstanteUtils;
42 import fr.paris.lutece.plugins.deployment.util.DeploymentUtils;
43 import fr.paris.lutece.portal.service.i18n.I18nService;
44 import fr.paris.lutece.portal.service.spring.SpringContextService;
45 import fr.paris.lutece.portal.service.util.AppLogService;
46 import fr.paris.lutece.portal.service.util.AppPropertiesService;
47
48 import java.util.ArrayList;
49 import java.util.HashMap;
50 import java.util.List;
51 import java.util.Locale;
52
53 import javax.inject.Inject;
54
55 public class ServerApplicationService implements IServerApplicationService
56 {
57 private static HashMap<String, ServerApplicationInstance> _hashServerApplicationInstance;
58 @Inject
59 private IEnvironmentService _environmentService;
60 @Inject
61 private IActionService _actionService;
62
63
64
65
66
67
68
69
70
71
72 public HashMap<String, List<ServerApplicationInstance>> getHashServerApplicationInstance( Application application, String strServerApplicationType,
73 Locale locale, boolean withActions, boolean withStatus )
74 {
75 HashMap<String, List<ServerApplicationInstance>> hashServerApplicationInstance = new HashMap<String, List<ServerApplicationInstance>>( );
76 List<Environment> listEnvironments = _environmentService.getListEnvironments( application.getCode( ), locale );
77
78 if ( listEnvironments != null )
79 {
80 List<ServerApplicationInstance> listServerApplicationInstance;
81
82 for ( Environment environment : listEnvironments )
83 {
84 listServerApplicationInstance = new ArrayList<ServerApplicationInstance>( );
85 listServerApplicationInstance.addAll( getListServerApplicationInstanceByEnvironment( application, environment.getCode( ),
86 strServerApplicationType, locale, withActions, withStatus ) );
87 hashServerApplicationInstance.put( environment.getCode( ), listServerApplicationInstance );
88 }
89 }
90
91 return hashServerApplicationInstance;
92 }
93
94 public List<ServerApplicationInstance> getListServerApplicationInstanceByEnvironment( Application application, String strCodeEnvironment,
95 String strServerApplicationType, Locale locale, boolean withActions, boolean withStatus )
96 {
97 String strPlateformEnvironmentBaseUrl = AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_ENVIRONMENT_PLATEFORM_BASE_URL );
98 List<ServerApplicationInstance> listServerApplicationInstance = new ArrayList<ServerApplicationInstance>( );
99 List<String> listStrServerApplicationInstance;
100 String strWebserviceServerApplicationJsonObjectName = AppPropertiesService
101 .getProperty( ConstanteUtils.PROPERTY_WEBSERVICE_SERVER_APPLICATION_INSTANCES_JSON_OBJECT_NAME );
102 String strWebserviceServerApplicationJsonDictionaryName = AppPropertiesService
103 .getProperty( ConstanteUtils.PROPERTY_WEBSERVICE_SERVER_APPLICATION_INSTANCES_JSON_DICTIONARY_NAME );
104 String strJSONServerApplicationInstances = null;
105
106 try
107 {
108 strJSONServerApplicationInstances = DeploymentUtils.callPlateformEnvironmentWs( strPlateformEnvironmentBaseUrl
109 + ConstanteUtils.CONSTANTE_SEPARATOR_SLASH
110 + DeploymentUtils.getPlateformUrlServerApplicationInstances( application.getCode( ), strCodeEnvironment, strServerApplicationType ) );
111 }
112 catch( Exception e )
113 {
114 AppLogService.error( e );
115 }
116
117 if ( strJSONServerApplicationInstances != null )
118 {
119 listStrServerApplicationInstance = DeploymentUtils.getJSONDictionary( strWebserviceServerApplicationJsonObjectName,
120 strWebserviceServerApplicationJsonDictionaryName, strJSONServerApplicationInstances );
121
122 for ( String strServerApplicationInstance : listStrServerApplicationInstance )
123 {
124 listServerApplicationInstance.add( getServerApplicationInstance( application, strServerApplicationInstance.toLowerCase( ), strCodeEnvironment,
125 strServerApplicationType, locale, withActions, withStatus ) );
126 }
127 }
128
129 return listServerApplicationInstance;
130 }
131
132 public ServerApplicationInstance getServerApplicationInstance( Application application, String strServerInstanceCode, String strCodeEnvironment,
133 String strServerType, Locale locale, boolean withActions, boolean withStatus )
134 {
135 if ( _hashServerApplicationInstance == null )
136 {
137 initHashServerApplicationInstance( );
138 }
139
140 ServerApplicationInstance defaultServerApplicationInstance = _hashServerApplicationInstance.get( strServerType
141 + ConstanteUtils.CONSTANTE_SEPARATOR_POINT + strServerInstanceCode );
142 ServerApplicationInstance serverApplicationInstance = newServerApplicationInstance( defaultServerApplicationInstance.getBeanName( ), locale );
143 serverApplicationInstance.setCodeEnvironment( strCodeEnvironment );
144 serverApplicationInstance.setName( I18nService.getLocalizedString( serverApplicationInstance.getI18nKeyName( ), locale ) );
145 setFtpInfo( serverApplicationInstance, application.getCode( ) );
146
147 if ( withActions )
148 {
149 serverApplicationInstance.setListServerApplicationAction( _actionService.getListActionByServerApplicationInstance( application,
150 serverApplicationInstance, locale ) );
151 }
152
153 if ( withStatus )
154 {
155 serverApplicationInstance.setStatus( getStatus( application, serverApplicationInstance ) );
156 }
157
158 return serverApplicationInstance;
159 }
160
161 public void setFtpInfo( ServerApplicationInstance serverApplicationInstance, String strCodeApplication )
162 {
163
164
165 FtpInfo ftpInfo = new FtpInfo( );
166 ftpInfo.setHost( AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_DEPLOYMENT_SERVER_APPLICATION_FTP_HOST ) );
167 ftpInfo.setPort( AppPropertiesService.getPropertyInt( ConstanteUtils.PROPERTY_DEPLOYMENT_SERVER_APPLICATION_FTP_PORT, 21 ) );
168 ftpInfo.setUserLogin( AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_DEPLOYMENT_SERVER_APPLICATION_FTP_USER_LOGIN ) );
169 ftpInfo.setUserPassword( AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_DEPLOYMENT_SERVER_APPLICATION_FTP_USER_PASSWORD ) );
170 serverApplicationInstance.setFtpInfo( ftpInfo );
171 }
172
173 private void initHashServerApplicationInstance( )
174 {
175 List<ServerApplicationInstance> listServerApplicationInstance = SpringContextService.getBeansOfType( ServerApplicationInstance.class );
176 _hashServerApplicationInstance = new HashMap<String, ServerApplicationInstance>( );
177
178 if ( listServerApplicationInstance != null )
179 {
180 for ( ServerApplicationInstance serverApplicationInstance : listServerApplicationInstance )
181 {
182 _hashServerApplicationInstance.put(
183 serverApplicationInstance.getType( ) + ConstanteUtils.CONSTANTE_SEPARATOR_POINT + serverApplicationInstance.getCode( ),
184 serverApplicationInstance );
185 }
186 }
187 }
188
189 private ServerApplicationInstance newServerApplicationInstance( String strBeanName, Locale locale )
190 {
191 return (ServerApplicationInstance) SpringContextService.getBean( strBeanName );
192 }
193
194 private Integer getStatus( Application application, ServerApplicationInstance serverApplicationInstance )
195 {
196 if ( ( serverApplicationInstance != null ) && ( serverApplicationInstance.getListServerApplicationAction( ) != null ) )
197 {
198 for ( IAction action : serverApplicationInstance.getListServerApplicationAction( ) )
199 {
200 if ( action.isUsedForStatus( ) )
201 {
202 boolean bResultOk = _actionService.executeAction( application, action, serverApplicationInstance, null );
203
204 return new Integer( new Boolean( bResultOk ) ? 1 : 0 );
205 }
206 }
207 }
208
209 return null;
210 }
211 }