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.business;
35
36 import fr.paris.lutece.plugins.deployment.util.ConstanteUtils;
37 import fr.paris.lutece.plugins.deployment.util.DeploymentUtils;
38 import fr.paris.lutece.portal.service.util.AppLogService;
39 import fr.paris.lutece.portal.service.util.AppPropertiesService;
40
41 import net.sf.json.JSONArray;
42 import net.sf.json.JSONObject;
43
44 import org.apache.commons.collections.CollectionUtils;
45 import org.apache.commons.lang.StringUtils;
46
47 import java.util.Iterator;
48 import java.util.List;
49
50
51
52
53
54
55 public class ExecuteAction extends DefaultAction
56 {
57 @Override
58 public String run( Application application, ServerApplicationInstance serverApplicationInstance, CommandResult commandResult, ActionParameter... parameter )
59 {
60
61 String strResult = null;
62
63 String strDataBase = null;
64 String strScriptName = null;
65 for ( int i = 0; i < parameter.length; i++ )
66 {
67
68 if ( parameter [i].getName( ).equals( ConstanteUtils.PARAM_CODE_DATABASE ) )
69 {
70
71 strDataBase = parameter [i].getValue( );
72 }
73 if ( parameter [i].getName( ).equals( ConstanteUtils.PARAM_SCRIPT_NAME ) )
74 {
75
76 strScriptName = parameter [i].getValue( );
77 }
78 }
79
80 if ( !StringUtils.isEmpty( strDataBase ) && !StringUtils.isEmpty( strScriptName ) )
81 {
82 String strPlateformEnvironmentBaseUrl = AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_ENVIRONMENT_PLATEFORM_BASE_URL );
83 String strWebserviceActionJsonPropery = AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_WEBSERVICE_ACTION_RESULT_JSON_PROPERTY_RESULT );
84 String strJSONAction = null;
85
86 try
87 {
88 strJSONAction = DeploymentUtils.callPlateformEnvironmentWs( strPlateformEnvironmentBaseUrl + ConstanteUtils.CONSTANTE_SEPARATOR_SLASH
89 + DeploymentUtils.getPlateformUrlServerApplicationAction( application.getCode( ), serverApplicationInstance, this.getCode( ) )
90 + ConstanteUtils.CONSTANTE_SEPARATOR_SLASH + strDataBase + ConstanteUtils.CONSTANTE_SEPARATOR_SLASH + strScriptName );
91 }
92 catch( Exception e )
93 {
94 AppLogService.error( e );
95 }
96
97 if ( strJSONAction != null )
98 {
99 JSONObject jo = DeploymentUtils.getJSONOBject( strJSONAction );
100 JSONObject joStep;
101
102 if ( jo != null )
103 {
104 strResult = jo.getString( strWebserviceActionJsonPropery );
105
106 JSONArray steps = jo.getJSONObject( "execution" ).getJSONArray( "steps" );
107 Iterator<JSONObject> iterator = steps.iterator( );
108
109 while ( iterator.hasNext( ) )
110 {
111 joStep = iterator.next( );
112 if ( joStep.getString( "step_name" ).equals( "[ STEP 3 ] : execute" ) )
113 {
114
115 commandResult.getLog( ).append( "**************stdout******************* \n" );
116 Iterator<String> iteratStdOut = joStep.getJSONArray( "stdout" ).iterator( );
117 while ( iteratStdOut.hasNext( ) )
118 {
119 commandResult.getLog( ).append( iteratStdOut.next( ) + " \n" );
120 }
121 commandResult.getLog( ).append( "*************************************** \n" );
122 commandResult.getLog( ).append( "**************Errors******************* \n" );
123 Iterator<String> iteratStdError = joStep.getJSONArray( "stderr" ).iterator( );
124
125 while ( iteratStdError.hasNext( ) )
126 {
127 commandResult.getLog( ).append( iteratStdError.next( ) + " \n" );
128 }
129 commandResult.getLog( ).append( "*************************************** \n" );
130 }
131
132 }
133
134 }
135 }
136 }
137
138 return strResult;
139 }
140 }