An IHM to import file
You can import files with a classical html form like the following :A form example : form.gsp
Below, here is an example of Grails upload form by using g:uploadForm tags.This form, when submit, calls the init action from the admin controller.It passed files in parameter with Input tag.The input file with the parameter multiple will permit to upload severeal files.<g:uploadForm action="init" controller="admin">
<form role="form">
<div class="form-group">
<label for="files">Choix du fichier à parser</label>
<input type="file" id="files" name="files[]" multiple>
<p class="help-block">Vous devez choisir un fichier httpd.conf</p>
</div>
<div class="form-group">
<label for="machinename">Nom de la machine</label>
<input type="text" class="form-control" id="machinename" name="machinename" placeholder="....ac-limoges.fr" value="">
</div>
<button type="submit" class="btn btn-info">Submit</button>
</form>
</g:uploadForm>
Controller
For example, to parse a file, you could do the following :
class AdminController {
def init() {
if (request instanceof MultipartHttpServletRequest) {
...
request.getFiles("files[]").each { file ->
log.info("init() file to parse:" + file.originalFilename)
InputStream inputStream = file.inpustream
BufferedReader = new BufferedReader(new InputStreamReader(inputStream))
try {
String ldapUser = EMPTY
String ldapPwd = EMPTY
String ldapHost = EMPTY
String ldapPort = EMPTY
while ((line = br.readLine()) != null) {
...
}
}
}
...
}
}
...
The arry files[] will contain all import files.You have to notice that file is type of org.springframework.web.multipart.MultiPartFile and not java.io.File
Import files automaticaly
An other way, is to import files automaticaly. You just have to do a method in the controller like the following :
class AdminController {
def reloadData() {
def path = "E:\\projet\\toolprod\\import\\"
log.info("reloadData() Initializing application from httpd.conf files in machine directory ...")
new File(path).listFiles().findAll{
if (it.isDirectory()) {
log.info("reloadData() Machine name ( Directory name ) :" + it.name)
String machineName = it.name
log.debug("reloadData() files list:" + it.listFiles())
for (File f : it.listFiles()) {
...
}
}
...
Then you need to access at the following url : http://localhost:8080/appli/admin/reloadData
After that, it's easy to make a crontab with a curl to make automatisation ...
No comments:
Post a Comment