Skip to content

Commit 9aa67c0

Browse files
criado um controller para aprendizagem e renomeada algumas classes
1 parent 9acad8c commit 9aa67c0

File tree

14 files changed

+313
-114
lines changed

14 files changed

+313
-114
lines changed

app/controllers/Wizard.java

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package controllers;
2+
3+
import java.io.File;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
7+
import models.Project;
8+
9+
import play.mvc.Controller;
10+
import util.SvnUtil;
11+
12+
public class Wizard extends Controller {
13+
14+
public static void step1() {
15+
render();
16+
}
17+
18+
public static void checkout() {
19+
String login = params.get("svnLogin");
20+
String password = params.get("svnPassword");
21+
String repository = params.get("svnRepository");
22+
23+
SvnUtil svnUtil = new SvnUtil(login, password);
24+
25+
String checkoutDirName = getCheckoutDirFrom(repository);
26+
File checkoutDir = new File(checkoutDirName);
27+
28+
Map map = new HashMap();
29+
map.put("repository", repository);
30+
31+
try {
32+
svnUtil.checkout(repository, checkoutDir);
33+
34+
Project project = new Project(checkoutDir);
35+
map.put("modules", project.getModules());
36+
map.put("success", true);
37+
map.put("message", "ok");
38+
}
39+
catch (Exception e) {
40+
map.put("success", false);
41+
map.put("message", e.getMessage());
42+
}
43+
44+
renderJSON(map);
45+
}
46+
47+
private static String getCheckoutDirFrom(String repository) {
48+
String[] splited = repository.split("/");
49+
String workingCopy = splited[splited.length - 1];
50+
String tempDir = System.getProperty("java.io.tmpdir") + System.getProperty("file.separator");
51+
return tempDir + workingCopy;
52+
}
53+
}

app/models/Project.java

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package models;
2+
3+
import java.io.File;
4+
import java.io.FilenameFilter;
5+
import java.util.ArrayList;
6+
import java.util.Date;
7+
import java.util.List;
8+
9+
import javax.persistence.Column;
10+
import javax.persistence.Entity;
11+
import javax.persistence.Temporal;
12+
import javax.persistence.TemporalType;
13+
14+
import play.db.jpa.Model;
15+
16+
@Entity(name="projects")
17+
public class Project extends Model {
18+
19+
@Column(unique=true)
20+
public String name;
21+
22+
public String status;
23+
24+
@Temporal(TemporalType.DATE)
25+
public Date date;
26+
27+
private File directory;
28+
29+
public Project(File projectDir) {
30+
this.directory = projectDir;
31+
}
32+
33+
public List<String> getModules() {
34+
String name = directory.getName();
35+
36+
List<String> modules = new ArrayList<String>();
37+
38+
if (checkExists("ear")) modules.add(name + "-ear");
39+
if (checkExists("ejb")) modules.add(name + "-ejb");
40+
if (checkExists("ejbClient")) modules.add(name + "-ejbClient");
41+
if (checkExists("pom")) modules.add(name + "-pom");
42+
if (checkExists("web")) modules.add(name + "-web");
43+
if (checkExists("ws")) modules.add(name + "-ws");
44+
if (checkExists("util")) modules.add(name + "-util");
45+
46+
return modules;
47+
}
48+
49+
private boolean checkExists(String module) {
50+
if (directory.isDirectory()) {
51+
final String dirName = directory.getName() + "-" + module;
52+
53+
FilenameFilter filter = new FilenameFilter() {
54+
public boolean accept(File dir, String name) {
55+
return name.equals(dirName);
56+
}
57+
};
58+
59+
String[] files = directory.list(filter);
60+
return files.length > 0;
61+
}
62+
return false;
63+
}
64+
65+
}

app/util/BsadProject.java

-17
This file was deleted.

app/util/ProjectUtil.java

-35
This file was deleted.

app/util/SvnUtil.java

+8-14
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,14 @@ public SvnUtil(String username, String password) {
2525
this.password = password;
2626
}
2727

28-
public boolean checkout(String url, File folder) {
29-
try {
30-
SVNURL svnUrl = SVNURL.parseURIDecoded(url);
31-
SVNRepository repository = getRepository(svnUrl, getAuthManager(username, password));
32-
SVNClientManager ourClientManager = SVNClientManager.newInstance(null, repository.getAuthenticationManager());
33-
34-
SVNUpdateClient updateClient = ourClientManager.getUpdateClient();
35-
updateClient.setIgnoreExternals(false);
36-
updateClient.doCheckout(svnUrl, folder, SVNRevision.HEAD, SVNRevision.HEAD, true);
37-
return folder.isDirectory();
38-
}
39-
catch (SVNException e) {
40-
return false;
41-
}
28+
public void checkout(String url, File folder) throws SVNException {
29+
SVNURL svnUrl = SVNURL.parseURIDecoded(url);
30+
SVNRepository repository = getRepository(svnUrl, getAuthManager(username, password));
31+
SVNClientManager ourClientManager = SVNClientManager.newInstance(null, repository.getAuthenticationManager());
32+
33+
SVNUpdateClient updateClient = ourClientManager.getUpdateClient();
34+
updateClient.setIgnoreExternals(false);
35+
updateClient.doCheckout(svnUrl, folder, SVNRevision.HEAD, SVNRevision.HEAD, true);
4236
}
4337

4438
private ISVNAuthenticationManager getAuthManager(String username, String password) {

app/views/Wizard/step1.html

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#{extends 'main.html' /}
2+
3+
#{set 'myscripts'}
4+
<script>
5+
function checkout() {
6+
var login = $('#svnLogin').val(),
7+
password = $('#svnPassword').val(),
8+
repository = $('#svnRepository').val();
9+
10+
if (repository.length > 0) {
11+
$("#loading").bind("ajaxSend", function() {
12+
$(this).show();
13+
}).bind("ajaxComplete", function() {
14+
$(this).hide();
15+
});
16+
17+
var data = {'svnLogin':login, 'svnPassword':password, 'svnRepository':repository};
18+
$.ajax({
19+
type: 'POST',
20+
url: '/checkout',
21+
dataType: 'json',
22+
data: data,
23+
async: false,
24+
success: function(data) {
25+
if (! data.success) {
26+
$('#checkoutError').html(data.message);
27+
}
28+
},
29+
error: function(data) {
30+
$('#checkoutError').html(data.message);
31+
},
32+
});
33+
};
34+
35+
36+
};
37+
</script>
38+
#{/}
39+
40+
41+
<div class="block">
42+
<div class="block_head">
43+
<div class="bheadl"></div>
44+
<div class="bheadr"></div>
45+
<h2>Passo 1</h2>
46+
</div>
47+
48+
<div class="block_content">
49+
<form id="frmCheckout">
50+
<p>
51+
<label>Usu&aacute;rio</label><br>
52+
<input type="text" id="svnLogin" name="svnLogin" class="text small">
53+
</p>
54+
<p>
55+
<label>Senha</label><br>
56+
<input type="password" id="svnPassword" name="svnPassword" class="text small">
57+
</p>
58+
<p>
59+
<label>URL do reposit&oacute;rio</label><br>
60+
<input type="text" id="svnRepository" name="svnRepository" class="text small">
61+
<span class="note">(Lembre-se do /trunk)</span><br>
62+
<span id="checkoutError" class="note error"></span>
63+
</p>
64+
65+
<div id="loading" style="display:none">
66+
<img src="@{'/public/images/ajax-loader.gif'}" alt="Loading" />&nbsp;Loading...
67+
</div>
68+
69+
<hr>
70+
<input type="button" name="submit" value="Checkout" class="submit small" onclick="checkout()">
71+
72+
<!--<input type="button" name="cancel" value="Cancel" class="submit small" onclick="window.location.href=''"> -->
73+
<br><br>
74+
</form>
75+
</div>
76+
77+
<div class="bendl"></div>
78+
<div class="bendr"></div>
79+
</div>

app/views/main.html

+63-15
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,64 @@
1-
<!DOCTYPE html>
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml">
3+
<head>
4+
<meta http-equiv="X-UA-Compatible" content="IE=7" />
5+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6+
7+
<link rel="stylesheet" media="all" href="@{'/public/stylesheets/style.css'}">
8+
<link rel="stylesheet" media="all" href="@{'/public/stylesheets/jquery.wysiwyg.css'}">
9+
<link rel="stylesheet" media="all" href="@{'/public/stylesheets/facebox.css'}">
10+
<link rel="stylesheet" media="all" href="@{'/public/stylesheets/visualize.css'}">
11+
<link rel="stylesheet" media="all" href="@{'/public/stylesheets/date_input.css'}">
12+
<link rel="stylesheet" media="all" href="@{'/public/stylesheets/datatable.css'}">
13+
14+
<script type="text/javascript" src="@{'/public/javascripts/jquery-1.7.1.min.js'}"></script>
15+
<script type="text/javascript" src="@{'/public/javascripts/jquery.img.preload.js'}"></script>
16+
<script type="text/javascript" src="@{'/public/javascripts/jquery.filestyle.mini.js'}"></script>
17+
<script type="text/javascript" src="@{'/public/javascripts/jquery.wysiwyg.js'}"></script>
18+
<script type="text/javascript" src="@{'/public/javascripts/jquery.date_input.pack.js'}"></script>
19+
<script type="text/javascript" src="@{'/public/javascripts/facebox.js'}"></script>
20+
<script type="text/javascript" src="@{'/public/javascripts/jquery.visualize.js'}"></script>
21+
<script type="text/javascript" src="@{'/public/javascripts/jquery.visualize.tooltip.js'}"></script>
22+
<script type="text/javascript" src="@{'/public/javascripts/jquery.select_skin.js'}"></script>
23+
<script type="text/javascript" src="@{'/public/javascripts/jquery.tablesorter.min.js'}"></script>
24+
<script type="text/javascript" src="@{'/public/javascripts/ajaxupload.js'}"></script>
25+
<script type="text/javascript" src="@{'/public/javascripts/jquery.pngfix.js'}"></script>
26+
<script type="text/javascript" src="@{'/public/javascripts/custom.js'}"></script>
27+
<script type="text/javascript" src="@{'/public/javascripts/jquery.dataTables.js'}"></script>
28+
29+
#{get 'myscripts' /}
30+
31+
32+
<!--[if lt IE 8]>
33+
<link rel="stylesheet" media="all" href="@{'/public/stylesheets/ie.css'}">
34+
<![endif]-->
35+
36+
<title>POMGEM</title>
37+
</head>
238

3-
<html>
4-
<head>
5-
<title>#{get 'title' /}</title>
6-
<meta charset="${_response_encoding}">
7-
<link rel="stylesheet" media="screen" href="@{'/public/stylesheets/main.css'}">
8-
#{get 'moreStyles' /}
9-
<link rel="shortcut icon" type="image/png" href="@{'/public/images/favicon.png'}">
10-
<script src="@{'/public/javascripts/jquery-1.5.2.min.js'}" type="text/javascript" charset="${_response_encoding}"></script>
11-
#{get 'moreScripts' /}
12-
</head>
13-
<body>
14-
#{doLayout /}
15-
</body>
16-
</html>
39+
<body>
40+
<div id="hld">
41+
<div class="wrapper"> <!-- wrapper begins -->
42+
<div id="header">
43+
44+
<h1><a href="/">POMGEM</a></h1>
45+
46+
<ul id="nav">
47+
48+
</ul>
49+
50+
<ul id="nav2">
51+
52+
</ul>
53+
54+
</div> <!-- #header ends -->
55+
<center>
56+
#{doLayout /}
57+
</center>
58+
59+
</div> <!-- wrapper ends -->
60+
61+
</div> <!-- #hld ends -->
62+
63+
</body>
64+
</html>

conf/routes

+2
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ GET /favicon.ico 404
1111
# Map static resources from the /app/public folder to the /public path
1212
GET /public/ staticDir:public
1313

14+
POST /checkout Wizard.checkout
15+
1416
# Catch all
1517
* /{controller}/{action} {controller}.{action}

public/images/ajax-loader.gif

2.16 KB
Loading

public/javascripts/jquery-1.7.1.min.js

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/stylesheets/main.css

Whitespace-only changes.

0 commit comments

Comments
 (0)