Author: jerome
Date: 2008-08-24 14:28:27 +0200 (Sun, 24 Aug 2008)
New Revision: 1575
Added:
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/FileUtils.java
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TgfGenerator.java
Modified:
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/CcInterface.java
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/ZIP.java
Log:
* First junk of TgfGenerator that allow to create a real gadget with registered
parameters.
Modified:
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/CcInterface.java
===================================================================
---
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/CcInterface.java
2008-08-24 09:07:56 UTC (rev 1574)
+++
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/CcInterface.java
2008-08-24 12:28:27 UTC (rev 1575)
@@ -102,6 +102,7 @@
import com.tuxdroid.cc.Utils.Settings;
import com.tuxdroid.cc.Utils.SimpleAlertSettings;
import com.tuxdroid.cc.Utils.TaskDefiner;
+import com.tuxdroid.cc.Utils.TgfGenerator;
import com.tuxdroid.cc.Utils.TuxDropTarget;
import com.tuxdroid.cc.Utils.TuxLanguagesMenu;
import com.tuxdroid.cc.Utils.TuxToolsMenu;
@@ -2807,8 +2808,18 @@
this.addToPlaylist(arg0);
}
//Drop to library.
- else if(arg0.getSource().equals(this.dropTargLibrary)){
- this.CopyFromWebsite(arg0);
+ else if(arg0.getSource().equals(this.dropTargLibrary)){
+ if(this.type == CcInterface.TYPE_ALERT){
+ //then create new tgf file with alert selected
gadget parameters.
+ new
TgfGenerator(alertPlaylist.getSelectedName(), this.currentGadget,
+
this.currentGadgetParameters.getValues());
+ }
+ else if(this.type == CcInterface.TYPE_REMOTELIST){
+ //then create new tgf file with favorites
selected gadget parameters.
+ new
TgfGenerator(remotePlaylist.getSelectedName(), this.currentGadget,
+
this.currentGadgetParameters.getValues());
+ }
+ else this.CopyFromWebsite(arg0);
}
}
Added:
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/FileUtils.java
===================================================================
---
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/FileUtils.java
(rev 0)
+++
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/FileUtils.java
2008-08-24 12:28:27 UTC (rev 1575)
@@ -0,0 +1,47 @@
+package com.tuxdroid.cc.Utils;
+
+import java.io.*;
+public class FileUtils {
+
+ public static void copy(final InputStream inStream, final OutputStream
outStream, final int bufferSize) throws IOException {
+ final byte[] buffer = new byte[bufferSize];
+ int nbRead;
+ while ((nbRead = inStream.read(buffer)) != -1) {
+ outStream.write(buffer, 0, nbRead);
+ }
+ }
+
+
+ public static void copyDirectory(final File from, final File to) throws
IOException {
+ if (! to.exists()) {
+ to.mkdir();
+ }
+ final File[] inDir = from.listFiles();
+ for (int i = 0; i < inDir.length; i++) {
+ final File file = inDir[i];
+ copy(file, new File(to, file.getName()));
+ }
+ }
+
+
+ public static void copyFile(final File from, final File to) throws
IOException {
+ final InputStream inStream = new FileInputStream(from);
+ final OutputStream outStream = new FileOutputStream(to);
+ if (from.length() > 0){
+ copy(inStream, outStream, (int) Math.min(from.length(),
4*1024));
+ }
+ inStream.close();
+ outStream.close();
+ }
+
+
+ public static void copy(final File from, final File to) throws
IOException {
+ if (from.isFile()) {
+ copyFile(from, to);
+ } else if (from.isDirectory()){
+ copyDirectory(from, to);
+ } else {
+ throw new FileNotFoundException(from.toString() + "
does not exist" );
+ }
+ }
+}
\ No newline at end of file
Added:
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TgfGenerator.java
===================================================================
---
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TgfGenerator.java
(rev 0)
+++
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TgfGenerator.java
2008-08-24 12:28:27 UTC (rev 1575)
@@ -0,0 +1,166 @@
+/* This file is part of "TuxDroid Control Center".
+ * Copyright 2008, kysoh
+ * Author : Conan Jerome
+ * eMail : [EMAIL PROTECTED]
+ * Site : http://www.kysoh.com/
+ *
+ * "TuxDroid Control Center" 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.1 of
+ * the License, or (at your option) any later version.
+ *
+ * "TuxDroid Control Center" 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 "TuxDroid Control Center"; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package com.tuxdroid.cc.Utils;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import com.kysoh.tuxdroid.gadget.framework.container.GadgetInstanceParameters;
+import com.kysoh.tuxdroid.gadget.framework.container.GadgetParameter;
+
+public class TgfGenerator {
+
+ //needed informations.
+ private String path;
+ private String name;
+ private String uid = java.util.UUID.randomUUID().toString();
+
+ private File temporaryFile;
+ private File file;
+ private File gadgetXML;
+
+ //parameters.
+ private GadgetInstanceParameters parameters;
+ private GadgetObject gadget;
+
+ public TgfGenerator(String name, GadgetObject gadget,
GadgetInstanceParameters instanceParams){
+ this.name = name;
+ this.path = gadget.getPath();
+ file = this.createTempDirectory();
+ this.parameters = instanceParams;
+ this.gadget = gadget;
+
+ //Writing new parameters.
+ try {
+ this.writeParameters();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ //Packagin gadget and move it into gadgets folder.
+ this.packageGadget();
+ this.export();
+ }
+
+ public File createTempDirectory(){
+ File f = new File(System.getProperty("user.home"));
+ File generator = new File(f.getAbsolutePath() + File.separator
+ "TgfGenerator");
+ File temp = new File(generator.getAbsolutePath() +
File.separator + this.name);
+ temp.mkdirs();
+ try {
+ FileUtils.copyDirectory(new File(this.path), temp);
+ gadgetXML = new File(temp.getAbsolutePath() +
File.separator + "gadgets.xml");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ this.temporaryFile = temp;
+ return temp;
+ }
+
+ public void writeParameters() throws Exception, IOException{
+ DocumentBuilderFactory fact =
DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = fact.newDocumentBuilder();
+
+ Document document = builder.parse(this.gadgetXML);
+ Element gdg = (Element)document.getElementsByTagName("gadget").item(0);
+ //Changing uuid.
+ Element description =
(Element)gdg.getElementsByTagName("description").item(0);
+ Element uid =
(Element)description.getElementsByTagName("uuid").item(0);
+ Element nom =
(Element)description.getElementsByTagName("name").item(0);
+ nom.setTextContent(this.name);
+ uid.setTextContent(this.uid);
+
+ //registering parameter.
+ Element registeredParameters =
(Element)gdg.getElementsByTagName("parameters").item(0);
+
+ NodeList nodes = registeredParameters.getChildNodes();
+ for(GadgetParameter parameter :
this.gadget.getGadget().getParameters()){
+ String name = parameter.getName();
+ String value = this.parameters.get(parameter);
+ for(int i=0; i< nodes.getLength(); i++){
+
if(nodes.item(i).getNodeName().equals("parameter")){
+ Element param = (Element)nodes.item(i);
+ //then parameter node.
+
if(param.getAttribute("name").equals(name)){
+ //then it's our parameter.
+
nodes.item(i).getAttributes().getNamedItem("defaultValue").setTextContent(value);
+ }
+ }
+ }
+ }
+
+
+ //registering changes.
+ this.registerChanges(document);
+ }
+
+ public void packageGadget(){
+ File test = new File(this.file.getAbsolutePath());
+ ZIP zip = new ZIP(test, new
File((this.temporaryFile.getAbsolutePath() + ".tgf").replace(" ", "-")));
+ try {
+ zip.compress(5);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void export(){
+
+ }
+
+ private void registerChanges(Document document){
+ try {
+ // Create Dom source.
+ Source source = new DOMSource(document);
+
+ //Create output.
+ Result resultat = new StreamResult(this.gadgetXML);
+
+ TransformerFactory fabrique = TransformerFactory.newInstance();
+ Transformer transformer = fabrique.newTransformer();
+
+ // Registration.
+ transformer.transform(source, resultat);
+ }
+ catch(Exception e){
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file
Modified:
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/ZIP.java
===================================================================
---
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/ZIP.java
2008-08-24 09:07:56 UTC (rev 1574)
+++
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/ZIP.java
2008-08-24 12:28:27 UTC (rev 1575)
@@ -74,7 +74,9 @@
zipDir(filePath, zos);
continue;
}
- String entryName =
f.getAbsolutePath().substring(src.getParent().length() + 1);
+ String entryName =
f.getAbsolutePath().substring(src.getParent().length() + 1)
+ .substring(this.src.getName().length()
+ 1);
+ System.out.println(entryName);
FileInputStream fis = new FileInputStream(f);
ZipEntry anEntry = new ZipEntry(entryName);
zos.putNextEntry(anEntry);
@@ -113,7 +115,8 @@
while ((zen = zis.getNextEntry()) != null) {
if (zen.isDirectory())
new File(dst.getAbsolutePath() + File.separator +
zen.getName())
- .mkdir();
+ .mkdir();
+
else {
File f = new File(dst.getAbsolutePath() + File.separator
+ zen.getName());
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn