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

Reply via email to