Package com.exedosoft.plat.gene.jquery

Source Code of com.exedosoft.plat.gene.jquery.AProjectForwarderJquery

package com.exedosoft.plat.gene.jquery;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import com.exedosoft.plat.DAOUtil;
import com.exedosoft.plat.ExedoException;
import com.exedosoft.plat.Transaction;
import com.exedosoft.plat.bo.BOInstance;
import com.exedosoft.plat.bo.BusiPackage;
import com.exedosoft.plat.bo.DOApplication;
import com.exedosoft.plat.bo.DOBO;
import com.exedosoft.plat.bo.DODataSource;
import com.exedosoft.plat.bo.DOResource;
import com.exedosoft.plat.bo.DOService;
import com.exedosoft.plat.gene.jquery.multi.AProjectForwarderMulti;
import com.exedosoft.plat.ui.DOController;
import com.exedosoft.plat.ui.DOMenuModel;
import com.exedosoft.plat.ui.DOPaneLinks;
import com.exedosoft.plat.ui.DOPaneModel;
import com.exedosoft.plat.ui.jquery.menu.JqueryMenuXP;
import com.exedosoft.plat.ui.jquery.pane.ContentPane;
import com.exedosoft.plat.ui.jquery.pane.ContentPaneScroll;
import com.exedosoft.plat.ui.jquery.pane.LayOutLeft;
import com.exedosoft.plat.ui.jquery.pane.LayOutSplitPane;
import com.exedosoft.plat.ui.jquery.pane.MainPage;
import com.exedosoft.plat.util.DOGlobals;
import com.exedosoft.plat.util.StringUtil;

/**
* 使用分布式配置库,实现起来太复杂 但是可以动态切换配置库 还是使用导入、导出方式,实现团队协作开发
*
* 导入、导出的方式可以使用xml文件,sql文件。 导入、导出的粒度: 1,工程 2,业务包 3,业务对象 4,服务 5,面板 6,表格
*
* 还有一种 可以按日期。 就是某个日期之后的,全部导出去
*
* 其它更小粒度(最后实现是否考虑)
*
* 属性 参数 表格元素 树 树节点 菜单
*
*
*
*
*
* @author IBM
*
*/

public class AProjectForwarderJquery {

  DOController layOutHeader = DOController
      .getControllerByName("com.exedosoft.plat.ui.jquery.pane.LayOutHeader");

  DOController layOutLeft = DOController.getControllerByName(LayOutLeft.class
      .getName());

  DOController mainPage = DOController.getControllerByName(MainPage.class
      .getName());

  DOController contentScroll = DOController
      .getControllerByName(ContentPaneScroll.class.getName());

  DOController ccSplitePane = DOController
      .getControllerByName(LayOutSplitPane.class.getName());

  DOController contentPane = DOController
      .getControllerByName(ContentPane.class.getName());
  /**
   * MenuController,但是有滚动条
   */
  DOController menuController = DOController
      .getControllerByName(JqueryMenuXP.class.getName());

  public void forwardBaseUI(String projectUid) {
   
   
    if("true".equals(DOGlobals.getValue("multi.tenancy"))){
     
      AProjectForwarderMulti  afm = new AProjectForwarderMulti();
      afm.forwardBaseUI(projectUid);
      return;

    }
   
   
    DOApplication project = DOApplication.getApplicationByID(projectUid);

    if (DOBO.getDOBOByName(project.getName() + "_global_bo") != null) {
      return;
    }
    // HbmDAO dao = new HbmDAO();
    // dao.setAutoClose(false);

    // //定义主业务包,同名业务包
    BusiPackage bp = new BusiPackage();
    bp.setApplication(project);
    bp.setL10n(project.getL10n());
    bp.setName(project.getName());

    DOBO aBO = new DOBO();
    aBO.setType(DOBO.TYPE_BUSINESS);
    aBO.setName(project.getName() + "_global_bo");
    aBO.setL10n(project.getL10n() + "_Global");

    DODataSource dds = DODataSource.parseGlobals();

    Transaction t = dds.getTransaction();

    t.begin();

    DOService aService = DOService.getService("DO_UI_PaneLinks_copy");
    try {
      // //////////保存业务包
      DAOUtil.INSTANCE().currentDataSource(dds);

      DAOUtil.INSTANCE().store(bp);

      // //保存业务对象
      aBO.setPakage(bp);

      DAOUtil.INSTANCE().store(aBO);
     
      ///////关联组织权限相关的业务包到初始化的工程下面

      DOService updateBPService = DOService.getService("DO_BusiPackage_Update_copy");
      BusiPackage bporg = BusiPackage.getPackageByName("dorgauth");
      bporg.setApplication(project);
      DAOUtil.INSTANCE().store(bporg,updateBPService);
     

      BusiPackage bpAuthSys = BusiPackage.getPackageByName("auth_system_imp");
      bpAuthSys.setApplication(project);
      DAOUtil.INSTANCE().store(bpAuthSys,updateBPService);

     
      BusiPackage bpLog = BusiPackage.getPackageByName("log_default_imp");
      bpLog.setApplication(project);
      DAOUtil.INSTANCE().store(bpLog,updateBPService);
     

      BusiPackage liuchengceshi = BusiPackage.getPackageByName("liuchengceshi");
      liuchengceshi.setApplication(project);
      DAOUtil.INSTANCE().store(liuchengceshi,updateBPService);
     
      BusiPackage gongzuoliu = BusiPackage.getPackageByName("gongzuoliu");
      gongzuoliu.setApplication(project);
      DAOUtil.INSTANCE().store(gongzuoliu,updateBPService);
     
      BusiPackage wf_history = BusiPackage.getPackageByName("wf_history");
      wf_history.setApplication(project);
      DAOUtil.INSTANCE().store(wf_history,updateBPService);

      /**
       * 存储应用的根面板
       */
      DOPaneModel pmRoot = new DOPaneModel();
      pmRoot.setCategory(aBO);
      pmRoot.setName("pane_" + project.getName());
      pmRoot.setL10n("pane_" + project.getL10n());
      pmRoot.setTitle(project.getDescription());

      // //////////////ccLayOutPane
      pmRoot.setController(contentPane);

      DAOUtil.INSTANCE().store(pmRoot);

      // ///////业务对象发布为一个应用
      project.setDobo(aBO);
      DAOUtil.INSTANCE().store(project);
     
      ////头部jsp
      DOResource rs = new DOResource();
      rs.setResourceName("jspheader_" + project.getName());
      rs.setResourcePath(project.getName() + "/FormHeader.jsp");
      rs.setResourceType(1);
      DAOUtil.INSTANCE().store(rs);
                                 
      /**
       * 建立新的头面板
       */
      DOPaneModel pmTop = new DOPaneModel();

      pmTop.setController(layOutHeader);
      pmTop.setLinkType(DOPaneModel.LINKTYPE_RESOURCE);
      pmTop.setLinkUID(rs.getObjUid());
      pmTop.setLayoutAlign("top");
      pmTop.setCategory(aBO);
      pmTop.setL10n(project.getL10n() + "_headerPane");
      pmTop.setName(project.getName() + "_headerPane");
      DAOUtil.INSTANCE().store(pmTop);

      /**
       * 建立根面板和头面板的关联关系
       */
      DOPaneLinks pmTopLink = new DOPaneLinks();
      pmTopLink.setParentPane(pmRoot);
      pmTopLink.setChildPane(pmTop);
      pmTopLink.setOrderNum(new Integer(5));
      DAOUtil.INSTANCE().store(pmTopLink, aService);

      /**
       * 创建下方的面板
       */
      DOPaneModel pmBottom = new DOPaneModel();
      pmBottom.setCategory(aBO);
      pmBottom.setL10n(project.getL10n()  + "_mainpane");
      pmBottom.setName(project.getName() + "_mainpane");

      pmBottom.setController(ccSplitePane);
      DAOUtil.INSTANCE().store(pmBottom);
      /**
       * 建立根面板和工作区域面板的关联
       */

      DOPaneLinks pmBottomLink = new DOPaneLinks();
      pmBottomLink.setParentPane(pmRoot);
      pmBottomLink.setChildPane(pmBottom);
      pmBottomLink.setOrderNum(new Integer(10));
      DAOUtil.INSTANCE().store(pmBottomLink, aService);

      // /左边面板

      DOMenuModel dmRoot = new DOMenuModel();
      dmRoot.setCategory(aBO);
      dmRoot.setController(menuController);
      // ////////同名DOMenuModel
      dmRoot.setName(project.getName() + "_root");
      dmRoot.setL10n("Welcome " + project.getL10n());
      DOService storeRootMenu = DOService.getService("DO_UI_MenuModel_Insert_firstlevel");
      DAOUtil.INSTANCE().store(dmRoot,storeRootMenu);     
     
      ////更新菜单获取的sql语句
       DOService menuService = DOService.getService("s_menumodel_byName");
       menuService.setMainSql("select * from do_ui_menumodel where name = '" + dmRoot.getName() + "'");
       DAOUtil.INSTANCE().store(menuService);
       

      DOMenuModel dmBP = new DOMenuModel();
      dmBP.setCategory(aBO);
      dmBP.setParentMenu(dmRoot);
      dmBP.setController(menuController);
      // ////////同名DOMenuModel
      dmBP.setName(project.getName());
      dmBP.setL10n(project.getL10n());
      DAOUtil.INSTANCE().store(dmBP);
     
     
      ///////组织权限相关的菜单 初始化到工程根菜单下面
      DOMenuModel dmmAuth = DOMenuModel.getMenuModelByName("dorgauth_bp");
      dmmAuth.setParentMenu(dmRoot);
      DAOUtil.INSTANCE().store(dmmAuth);
           
      ///把工作流相关的菜单初始化到工程根菜单下面
      DOMenuModel dorgauth_flow_test  = DOMenuModel.getMenuModelByName("dorgauth_flow_test");
      dorgauth_flow_test .setParentMenu(dmRoot);
      DAOUtil.INSTANCE().store(dorgauth_flow_test );
           
     
     
      ////工作台jsp
      rs = new DOResource();
      rs.setResourceName("workbenchjsp_" + project.getName());
      rs.setResourcePath(project.getName() + "/workbench.jsp");
      rs.setResourceType(1);
      DAOUtil.INSTANCE().store(rs);
     
      DOPaneModel pmContent = new DOPaneModel();// ///主内容显示区。
      pmContent.setCategory(aBO);
      pmContent.setName(project.getName() + "_MainContent");
      pmContent.setL10n(project.getL10n() + "_MainContent");
      pmContent.setController(mainPage);
      pmContent.setLinkType(DOPaneModel.LINKTYPE_RESOURCE);
      pmContent.setLinkUID(rs.getObjUid());
      DAOUtil.INSTANCE().store(pmContent);

      DOPaneLinks pmContentLink = new DOPaneLinks();
      pmContentLink.setParentPane(pmBottom);// //bottomPane为父亲
      pmContentLink.setChildPane(pmContent);
      pmContentLink.setOrderNum(new Integer(17));
      DAOUtil.INSTANCE().store(pmContentLink, aService);

      DOPaneModel pmLeft = new DOPaneModel();
      pmLeft.setController(layOutLeft);
      pmLeft.setLinkType(DOPaneModel.LINKTYPE_MENU);
      pmLeft.setLinkUID(dmRoot.getObjUid());
      pmLeft.setCategory(aBO);
      pmLeft.setL10n(project.getL10n() + "_leftindex_pane");
      pmLeft.setName(project.getName() + "_leftindex_pane");
     
     
      /**
       * 存储Mobile索引菜单的面包
       */
      DOPaneModel pmMobile = new DOPaneModel();
      pmMobile.setCategory(aBO);
      pmMobile.setName( project.getName() + "_mobile_pane");
      pmMobile.setL10n(project.getL10n() + "_Mobile");
      pmMobile.setTitle(project.getDescription());
      pmMobile.setExedoJsp("../mobile/exedo.jsp");
     
      pmMobile.setLinkType(DOPaneModel.LINKTYPE_MENU);
      pmMobile.setLinkUID(dmRoot.getObjUid());
      // //////////////ccLayOutPane
      pmMobile.setController(contentPane);

      DAOUtil.INSTANCE().store(pmMobile);

      /**
       * 保存左边的左边的索引菜单
       */
      pmLeft.setTargetPane(pmContent);
      DAOUtil.INSTANCE().store(pmLeft);

      DOPaneLinks pmLeftLink = new DOPaneLinks();
      pmLeftLink.setParentPane(pmBottom);// //bottomPane为父亲
      pmLeftLink.setChildPane(pmLeft);
      pmLeftLink.setOrderNum(new Integer(15));
      DAOUtil.INSTANCE().store(pmLeftLink, aService);
     
////最后copy
      this.copyDir(project);

    } catch (Exception e) {

      t.rollback();
      e.printStackTrace();
    } finally {
      t.end();
    }
 
    // /执行目录copy工作
  }

  void copyDir(DOApplication dop) {


    URL url = DOGlobals.class.getResource("/globals.xml");
    String fullFilePath = url.getPath();
    String prefix = fullFilePath.substring(0, fullFilePath.toLowerCase()
        .indexOf("web-inf"));

    try {
      StringUtil.copyDirectiory(prefix + dop.getName(), prefix
          + "exedo/baseproject/");

      dealAFile(prefix + dop.getName() +"/index.jsp","pane_dorgauth","pane_" + dop.getName());
      dealAFile(prefix + dop.getName() +"/FormHeader.jsp","baseproject/logoff.jsp",dop.getName() + "/logoff.jsp");
     
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

  }

  private void dealAFile(String theFile,String theSrc, String theRepla)
      throws UnsupportedEncodingException, FileNotFoundException,
      IOException {
    File indexFile = new File(theFile);

    BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(indexFile),"utf-8"));  
    StringBuffer sb = new StringBuffer();
    while (true) {
      String aLine = in.readLine();
      if(aLine==null){
        break;
      }
      System.out.println(aLine);
      if(aLine.indexOf(theSrc)!=-1){
        aLine =  aLine.replace(theSrc, theRepla);
      }
      sb.append(aLine).append("\n\r");
    }
    in.close();

   
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new  FileOutputStream(indexFile),"utf-8"));
    out.append(sb.toString());
    out.flush();
    out.close();
  }

  public static void main(String[] args) throws ExedoException {

   

    DOService resourceInsert  = DOService.getService("do_bo_insert");
    Map paras = new HashMap();
    paras.put("resourceName", "jspheader_aaaa");
    paras.put("resourcePath", "aaaa/FormHeader.jsp");
    paras.put("resourceType", "1");
//    BOInstance newResource = resourceInsert.invokeUpdate(paras);
//
//    ////头部jsp
//    DOResource rs = DOResource.getResourceByID(newResource.getUid());
    System.out.println("Hello:::::::::" + resourceInsert);
                               
  }

}
TOP

Related Classes of com.exedosoft.plat.gene.jquery.AProjectForwarderJquery

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.