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 java.io.ByteArrayInputStream;
37 import java.io.InputStream;
38 import java.util.HashMap;
39 import java.util.Locale;
40
41 import org.apache.commons.lang.StringUtils;
42
43 import fr.paris.lutece.plugins.deployment.service.DeploymentPlugin;
44 import fr.paris.lutece.plugins.deployment.service.IActionService;
45 import fr.paris.lutece.plugins.deployment.service.IFtpService;
46 import fr.paris.lutece.plugins.deployment.util.ConstanteUtils;
47 import fr.paris.lutece.plugins.deployment.util.DeploymentUtils;
48 import fr.paris.lutece.portal.service.plugin.Plugin;
49 import fr.paris.lutece.portal.service.plugin.PluginService;
50 import fr.paris.lutece.portal.service.spring.SpringContextService;
51 import fr.paris.lutece.portal.service.template.AppTemplateService;
52 import fr.paris.lutece.util.html.HtmlTemplate;
53
54 public class InitMysqlDatabase extends DefaultAction
55 {
56
57 private IFtpService _ftpService = SpringContextService.getBean( "deployment.FtpService" );
58 private IActionService _actionService = SpringContextService.getBean( "deployment.ActionService" );
59 private static final String ACTION_EXECUTE = "@EXECUTE_MYSQL";
60 private static final String SCRIPT_INIT_NAME = "init_db.sql";
61 private static final String DATABASE = "mysql";
62
63 @Override
64 public String run( Application application, ServerApplicationInstance serverApplicationInstance, CommandResult commandResult, ActionParameter... parameter )
65 {
66
67 String strResult = "true";
68 Plugin plugin = PluginService.getPlugin( DeploymentPlugin.PLUGIN_NAME );
69 HashMap model = new HashMap( );
70 model.put( ConstanteUtils.MARK_APPLICATION, application );
71
72 HtmlTemplate templateInitDatabaseContext = AppTemplateService.getTemplate( ConstanteUtils.TEMPLATE_INIT_DB, Locale.FRENCH, model );
73
74 InputStream iTemplateDatabaseContext = new ByteArrayInputStream( templateInitDatabaseContext.getHtml( ).getBytes( ) );
75
76 _ftpService.uploadFile( SCRIPT_INIT_NAME, iTemplateDatabaseContext, serverApplicationInstance.getFtpInfo( ),
77 DeploymentUtils.getDeployDirectoryTarget( application.getCode( ), serverApplicationInstance ), commandResult, false );
78
79 if ( commandResult.getStatus( ) == CommandResult.STATUS_ERROR )
80 {
81
82 return "false";
83 }
84
85 IAction action = _actionService.getAction( ACTION_EXECUTE, Locale.FRENCH );
86 ActionParameter databaseParameter = new ActionParameter( );
87 databaseParameter.setName( ConstanteUtils.PARAM_CODE_DATABASE );
88 databaseParameter.setValue( DATABASE );
89
90 ActionParameter scriptParameter = new ActionParameter( );
91 scriptParameter.setName( ConstanteUtils.PARAM_SCRIPT_NAME );
92 scriptParameter.setValue( SCRIPT_INIT_NAME );
93
94 ActionParameter [ ] tabParameters = new ActionParameter [ 2];
95
96 tabParameters [0] = databaseParameter;
97 tabParameters [1] = scriptParameter;
98
99 if ( action != null && _actionService.canExecuteAction( application, action, serverApplicationInstance, commandResult, tabParameters ) )
100 {
101
102 strResult = Boolean.toString( _actionService.executeAction( application, action, serverApplicationInstance, commandResult, tabParameters ) );
103 }
104
105 return strResult;
106 }
107
108 @Override
109 public boolean canRunAction( Application application, ServerApplicationInstance serverApplicationInstance, CommandResult commandResult,
110 ActionParameter... parameter )
111 {
112
113 if ( parameter != null )
114 {
115 for ( int i = 0; i < parameter.length; i++ )
116 {
117
118 if ( parameter [i].getName( ).equals( ConstanteUtils.PARAM_INIT_DATABASE ) )
119 {
120
121 return new Boolean( parameter [i].getValue( ) );
122 }
123 }
124 }
125
126 return false;
127 }
128
129 @Override
130 public String getTemplateFormAction( Application application, ServerApplicationInstance serverApplicationInstance, Locale locale )
131 {
132
133 return null;
134 }
135
136 }