Package org.geoforge.mdldat

Source Code of org.geoforge.mdldat.GfrMdlDatSpcPrtWork

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.geoforge.mdldat;

import java.io.File;
import java.util.ArrayList;
import java.util.logging.Logger;
import org.geoforge.io.file.GfrUtilFileSpcProjectAbs;
import org.geoforge.io.util.jar.JarHelper;
import org.geoforge.java.io.file.GfrUtilFile;
import org.geoforge.java.util.logging.filehandler.FileHandlerLogger;
import org.geoforge.mdldat.event.*;
import org.geoforge.wrpbasspcdatogcecl.work.GfrWrpBasSpcWrkDatSynAbs;
import org.geoforge.wrpbasusr.GfrWrpUsrSpcDspPrtAppRoot;

/**
*
* @author bill
*/
public class GfrMdlDatSpcPrtWork extends GfrMdlDatAbs
{
    final private static Logger _LOGGER_ = Logger.getLogger(GfrMdlDatSpcPrtWork.class.getName());

   static
   {
      GfrMdlDatSpcPrtWork._LOGGER_.addHandler(FileHandlerLogger.s_getInstance());
   }
   
    static private GfrMdlDatSpcPrtWork _INSTANCE_ = null;

   static public GfrMdlDatSpcPrtWork getInstance()
   {
      if (GfrMdlDatSpcPrtWork._INSTANCE_ == null)
         GfrMdlDatSpcPrtWork._INSTANCE_ = new GfrMdlDatSpcPrtWork();

      return GfrMdlDatSpcPrtWork._INSTANCE_;
   }
  
   // ---
  
   public void moveChild(
           String strNameSource,
           String strNameTarget,
           GfrWrpBasSpcWrkDatSynAbs wrpSyn) throws Exception
   {
      

      wrpSyn.rename(strNameSource, strNameTarget);
      
      String strPathAbsSpaceWork = GfrWrpUsrSpcDspPrtAppRoot.getInstance().getValueLastChildFromHistory();
      
       super.setChanged();
      Object obj = new GfrEvtMdlDtaSpcPrtMovePrj(strNameSource, strNameTarget, strPathAbsSpaceWork);
      super.notifyObservers(obj);
      
   }
  
   public void cloneChild(
           String strNameSource,
           String strNameTarget,
           GfrWrpBasSpcWrkDatSynAbs wrpSyn) throws Exception
   {
       // on DB
      String strKind = wrpSyn.getKindFromName(strNameSource);

      wrpSyn.save(strNameTarget, strKind);

      // on disk
      String strIdSource = wrpSyn.getIdFromName(strNameSource);
      String strIdTarget = wrpSyn.getIdFromName(strNameTarget);

      String strPathAbsSpaceWork = GfrWrpUsrSpcDspPrtAppRoot.getInstance().getValueLastChildFromHistory();

      File fleSource = new File(strPathAbsSpaceWork, strIdSource);
      File fleTarget = new File(strPathAbsSpaceWork, strIdTarget);
      GfrUtilFile.s_copyDirectory(fleSource, fleTarget);
      
      
      super.setChanged();
      Object obj = new GfrEvtMdlDtaSpcPrtClonePrj(strIdSource, strIdTarget, strPathAbsSpaceWork);
      super.notifyObservers(obj);
   }
  
   public void deleteAllChildren(
           GfrWrpBasSpcWrkDatSynAbs wrpSyn,
           GfrUtilFileSpcProjectAbs utlFile
           ) throws Exception
   {
      
      // ----
      // 1) deleteFromName all files in disk

      String[] strsChildrenExisting = GfrWrpUsrSpcDspPrtAppRoot.getInstance().getSortedNamesLastChildFromHistory();

      String[] strsProjectsFolder = wrpSyn.getIds();

      // TODO: fix up this probleme of deleting projects recently created!
      ArrayList<String> altOkId = new ArrayList<String>();
      ArrayList<String> altTbrlName = new ArrayList<String>();

      for (int i = 0; i < strsChildrenExisting.length; i++)
      {
         String strProjectFolder = strsProjectsFolder[i];

         String strPathAbsFolder = GfrWrpUsrSpcDspPrtAppRoot.getInstance().getValueLastChildFromHistory();
         strPathAbsFolder += File.separator;
         strPathAbsFolder += strProjectFolder;

         if (!utlFile.delete(new File(strPathAbsFolder)))
         {
            String strName = wrpSyn.getNameFromId(strsProjectsFolder[i]);

            altTbrlName.add(strName);

            String str = "failed to delete: " + strsProjectsFolder[i];
            GfrMdlDatSpcPrtWork._LOGGER_.warning(str);
            continue;
         }

         altOkId.add(strsProjectsFolder[i]);
      }

      if (!altTbrlName.isEmpty())
      {
         String str = "Sorry, failed to delete project(s):";

         for (int i = 0; i < altTbrlName.size(); i++)
         {
            str += "\n. " + altTbrlName.get(i);
         }

         GfrMdlDatSpcPrtWork._LOGGER_.warning(str);
         // TODO: return string that contains this error!!!!!!!!!
         //GfrOptionPaneAbs.s_showDialogWarning(null, str);
      }

      // ----
      // 2) deleteFromName all DB

      // beg workaround
      for (int i = 0; i < altOkId.size(); i++)
      {
         String strProjectCur = altOkId.get(i);
         wrpSyn.deleteFromId(strProjectCur);
      }

      // end workaround
      
      
      
      
      
      
       String strPathAbsSpaceWork = GfrWrpUsrSpcDspPrtAppRoot.getInstance().getValueLastChildFromHistory();
      
       super.setChanged();
      Object obj = new GfrEvtMdlDtaSpcPrtDelAllPrjs(strPathAbsSpaceWork);
      super.notifyObservers(obj);
   }
  
   public File importChild(
           File fleJarFileSource,
           String strIdTarget) throws Exception
   {
      String strPathAbsSpaceWork = GfrWrpUsrSpcDspPrtAppRoot.getInstance().getValueLastChildFromHistory();
      File fleDirTarget = new File(strPathAbsSpaceWork + File.separator + strIdTarget);
     
      fleDirTarget.mkdir();
      JarHelper jarUtil = new JarHelper();
      jarUtil.unjarDir(fleJarFileSource, fleDirTarget);
      
      super.setChanged();
      Object obj = new GfrEvtMdlDtaSpcPrtImportPrj(strIdTarget, strPathAbsSpaceWork);
      super.notifyObservers(obj);
     
      return fleDirTarget;
   }
  
   public void deleteChild(
           String strNameSource,
           GfrWrpBasSpcWrkDatSynAbs wrpSyn,
           GfrUtilFileSpcProjectAbs utlFile
           ) throws Exception
   {
      

      //Read in db
      String strIdSource = wrpSyn.getIdFromName(strNameSource);

      String strPathAbsSpaceWork = GfrWrpUsrSpcDspPrtAppRoot.getInstance().getValueLastChildFromHistory();
     
      String strPathAbsSource = strPathAbsSpaceWork;
      strPathAbsSource += File.separator;
      strPathAbsSource += strIdSource;


      // TODO: check for valid delete if (....)
      if (!utlFile.delete(new File(strPathAbsSource)))
      {
         String str = "Sorry, failed to delete project named " + strNameSource;
         GfrMdlDatSpcPrtWork._LOGGER_.warning(str);
         throw new Exception(str);

         //throw new Exception("failed to delete:" + strPathAbsSource);
      }

      // job on DB
      wrpSyn.deleteFromName(strNameSource);
      
      
      
       super.setChanged();
      Object obj = new GfrEvtMdlDtaSpcPrtDelPrj(strIdSource, strPathAbsSpaceWork);
      super.notifyObservers(obj);
   }
  
   public void newChild(String strValue, GfrWrpBasSpcWrkDatSynAbs wrpSyn) throws Exception
   {
       String strPathAbsSpaceWork = GfrWrpUsrSpcDspPrtAppRoot.getInstance().getValueLastChildFromHistory();
       String strIdTarget = wrpSyn.save(strValue);
      
      
       super.setChanged();
      Object obj = new GfrEvtMdlDtaSpcPrtNewPrj(strIdTarget, strPathAbsSpaceWork);
      super.notifyObservers(obj);
   }
  
   public void openChild(String strIdTarget, String strIdWrk) throws Exception
   {
       // ??? don't know if needed
       throw new UnsupportedOperationException("Not yet implemented");
      
   }
  
   // ---
   
   
    private GfrMdlDatSpcPrtWork()
    {
        super();
    }

}
TOP

Related Classes of org.geoforge.mdldat.GfrMdlDatSpcPrtWork

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.