Re: Reading and Saving homes on my web server using SweetHome3DApplet
Code: Select all
readHomeURL="readHome.php?home=%s",
writeHomeURL="writeHome.php",
listHomesURL="listHomes.php",
defaultHome=""Code: Select all
readHomeURL="%s",
writeHomeURL="",
listHomesURL="",
defaultHome="myHome.sh3d"Code: Select all
readHomeURL="readHome.php?home=%s",
writeHomeURL="writeHome.php",
listHomesURL="",
defaultHome="12345"Code: Select all
readHomeURL="%s",
writeHomeURL="",
listHomesURL="listHomes.php",
defaultHome=""I won't give you here the exact source code of the JSP pages I use, because it's valuable only in the context of sweethome3d.com where some data is stored in a database and an identification is required to open/save the homes of a user. So I prefer to give here translations of the existing php files that work on files local to the JSP pages and let you adapt them for your needs.On the other hand, looking at the SweetHome3D online source code, I've seen that you use listHomes.jsp, readHome.jsp, writeHome.jsp, readPreferences.jsp, and writePreferences.jsp as parameters for the SweetHome3DApplet, and I found a link to download php version of the first 3 files. Could you share the jsp version of these files?
Code: Select all
<%-- listHomes.jsp
Sweet Home 3D, Copyright (c) 2011 Emmanuel PUYBARET / eTeks <[email protected]>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--%>
<%-- Returns the list of homes --%>
<%@ page import="java.io.*" %>
<%@ page contentType="text/plain; charset=UTF-8" %>
<% out.clear();
String homesDir = application.getRealPath(".");
for (File homeFile : new File(homesDir).listFiles()) {
if (homeFile.isFile() && homeFile.getName().endsWith(".sh3d")) {
out.print(homeFile.getName().substring(0, homeFile.getName().length() - 5) + "\n");
}
} %>Code: Select all
<%-- writeHome.jsp
Sweet Home 3D, Copyright (c) 2011 Emmanuel PUYBARET / eTeks <[email protected]>
Distributed under the terms of the GNU General Public License
--%>
<%-- Uploads the file available in multipart file "home", saves it
in homes directory and returns "1" if save was successful
--%>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page contentType="text/plain; charset=UTF-8" %>
<% out.clear();
if (ServletFileUpload.isMultipartContent(request)) {
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024);
// Create a new file upload handler for files
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List items = upload.parseRequest(request);
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
if (!item.isFormField()) {
String fieldName = item.getFieldName();
if ("home".equals(fieldName)) {
String homesDir = application.getRealPath(".");
File homeFile = new File(homesDir, item.getName() + ".sh3d");
item.write(homeFile);
out.print("1");
return;
}
}
}
}
out.print("0");
%>Code: Select all
<%-- readHome.jsp
Sweet Home 3D, Copyright (c) 2011 Emmanuel PUYBARET / eTeks <[email protected]>
Distributed under the terms of the GNU General Public License
--%>
<%@ page import="java.io.*" %>
<%@ page contentType="application/SweetHome3D" %>
<% out.clear();
String homesDir = application.getRealPath(".");
File homeFile = new File(homesDir, request.getParameter("home") + ".sh3d");
response.setIntHeader("Content-length", (int)homeFile.length());
response.setHeader("Content-Disposition", "attachment; filename=" + homeFile.getName());
InputStream input = null;
OutputStream output = response.getOutputStream();
try {
input = new FileInputStream(homeFile);
byte [] buffer = new byte [8096];
int size;
while ((size = input.read(buffer)) != -1) {
output.write(buffer, 0, size);
}
} finally {
if (input != null) {
input.close();
}
if (output != null) {
output.close();
}
} %>Code: Select all
<%-- writePreferences.jsp
Sweet Home 3D, Copyright (c) 2011 Emmanuel PUYBARET / eTeks <[email protected]>
Distributed under the terms of the GNU General Public License
--%>
<%-- Saves the XML content of parameter named preferences
in homes directory and returns "1" if save was successful
--%>
<%@ page import="java.io.*" %>
<%@ page contentType="text/plain; charset=UTF-8" %>
<% out.clear();
String preferences = request.getParameter("preferences");
if (preferences != null) {
String homesDir = application.getRealPath(".");
File preferencesFile = new File(homesDir, "preferences.xml");
Writer writer = new OutputStreamWriter(new FileOutputStream(preferencesFile), "UTF-8");
try {
writer.write(preferences);
out.print("1");
return;
} finally {
if (out != null) {
writer.close();
}
}
}
out.print("0");
%>Code: Select all
<%-- readPreferences.jsp
Sweet Home 3D, Copyright (c) 2011 Emmanuel PUYBARET / eTeks <[email protected]>
Distributed under the terms of the GNU General Public License
--%>
<%-- Returns the preferences stored in preferences.xml file --%>
<%@ page import="java.io.*" %>
<%@ page contentType="application/xml; charset=UTF-8" %>
<% out.clear();
String homesDir = application.getRealPath(".");
File preferencesFile = new File(homesDir, "preferences.xml");
if (preferencesFile.exists()) {
response.setIntHeader("Content-length", (int)preferencesFile.length());
response.setHeader("Content-Disposition", "attachment; filename=preferences.xml");
InputStream input = null;
OutputStream output = response.getOutputStream();
try {
input = new FileInputStream(preferencesFile);
byte [] buffer = new byte [8096];
int size;
while ((size = input.read(buffer)) != -1) {
output.write(buffer, 0, size);
}
} finally {
if (input != null) {
input.close();
}
if (output != null) {
output.close();
}
}
} %>