⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvrfiletodom.java

📁 这是一个用java和xml编写的流媒体服务器管理软件
💻 JAVA
字号:
/* 
 * This software consists of voluntary contributions made by Vovida
 * Networks, Inc. and many individuals on behalf of Vovida Networks,
 * Inc.  For more information on Vovida Networks, Inc., please see
 * <http://www.vovida.org/>.
 * 
 */

package vocal.data;

import vocal.ui.AdministrativeLogin;
import vocal.comm.VPPException;
import vocal.comm.VPPNoSuchFileException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Node;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import java.util.Vector;
import java.io.IOException;
import java.io.StringReader;

/**
 * $RCSfile: FileToDOM.java,v $
 * 
 * @author $Author: bko $, $Date: 2002/09/26 01:14:01 $
 * @version $Revision: 1.33 $
 */
public class DvrFileToDOM implements DataDefaults, TreeNodeTypes
{
  private static Document baseDocument;
  private static Element rootElement;
  private static Element systemElement;
  private static Element serversElement;
  private static Element uaclientElement;
  

  public static Document readFiles() 
    throws NoSuchNodeException, IOException, SAXException, VPPException
  {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder parser = null;
    try
    {
      parser = dbf.newDocumentBuilder();
    }
    catch(ParserConfigurationException e1)
    {
      e1.printStackTrace();
      return null;
    }
    StringReader baseReader = new StringReader(ACC_BASE_XML);

    baseDocument = parser.parse(new InputSource(baseReader));
    rootElement = baseDocument.getDocumentElement();
    //systemElement = XMLUtils.getChildByName(rootElement, "system");
    //serversElement = XMLUtils.getChildByName(rootElement, "servers");
    //uaclientElement = XMLUtils.getChildByName(rootElement, "uaclient");
    // get the global config
    Document globalConfigDoc = null;

    try
    {

      // get the list of DvrClient 
      Document dvrDoc = null;

      try
      {
    	  
        System.out.println("looking for " + SYSTEM_DIR 
        		                + LIST_OF_DVR_CLIENT_FILE);
        
        StringReader reader = 
          new StringReader(AdministrativeLogin.getConnection().doGet(SYSTEM_DIR, 
        		  LIST_OF_DVR_CLIENT_FILE));

        try
        {
        	dvrDoc = parser.parse(new InputSource(reader));
        }
        catch (SAXException e)
        {
          System.out.println("bad XML: " + reader.toString());
          e.printStackTrace();
        }
       
     }

      catch (VPPNoSuchFileException e)
      {
    	  
        System.out.println("Creating new " + LIST_OF_DVR_CLIENT_FILE);

        StringReader reader = new StringReader(LIST_OF_DVR_CLIENT_XML);

        dvrDoc = parser.parse(new InputSource(reader));

        DOMToFile.writeFileFromNode(dvrDoc.getDocumentElement(), DVR_CLIENT, 
                SYSTEM_DIR, LIST_OF_DVR_CLIENT_FILE);
         
      }

      Element dvrNode = 
        (Element) (baseDocument.importNode(dvrDoc.getDocumentElement(), 
              true));

      dvrNode.setAttribute("fileDir", SYSTEM_DIR);
      dvrNode.setAttribute("fileName", LIST_OF_DVR_CLIENT_FILE);
      dvrNode.setAttribute("fileType", Integer.toString(DVR_CLIENT));
      
      rootElement.appendChild(dvrNode);
      fillInClient(dvrNode, DVR_DIR);

      
//    get the list of EnvClient 
      Document envDoc = null;

      try
      {
    	  
        System.out.println("looking for " + SYSTEM_DIR 
        		                + LIST_OF_ENV_CLIENT_FILE);
        
        StringReader reader = 
          new StringReader(AdministrativeLogin.getConnection().doGet(SYSTEM_DIR, 
        		  LIST_OF_ENV_CLIENT_FILE));

        try
        {
        	envDoc = parser.parse(new InputSource(reader));
        }
        catch (SAXException e)
        {
          System.out.println("bad XML: " + reader.toString());
          e.printStackTrace();
        }
       
     }

      catch (VPPNoSuchFileException e)
      {
    	  
        System.out.println("Creating new " + LIST_OF_ENV_CLIENT_FILE);

        StringReader reader = new StringReader(LIST_OF_ENV_CLIENT_XML);

        envDoc = parser.parse(new InputSource(reader));

        DOMToFile.writeFileFromNode(envDoc.getDocumentElement(), ENV_CLIENT, 
                SYSTEM_DIR, LIST_OF_ENV_CLIENT_FILE);
         
      }

      Element envNode = 
        (Element) (baseDocument.importNode(envDoc.getDocumentElement(), 
              true));

      envNode.setAttribute("fileDir", SYSTEM_DIR);
      envNode.setAttribute("fileName", LIST_OF_ENV_CLIENT_FILE);
      envNode.setAttribute("fileType", Integer.toString(ENV_CLIENT));
      
      rootElement.appendChild(envNode);
      fillInClient(envNode, ENV_DIR);

/*/
      Element dvr1 = baseDocument.createElement("DVR"); 
      uaclientElement.appendChild(dvr1);
      Element dvr11 = baseDocument.createElement("视频机1"); 
      dvr1.appendChild(dvr11);
      Element env2 = baseDocument.createElement("ENV"); 
      uaclientElement.appendChild(env2);
      Element env22 = baseDocument.createElement("环境机1"); 
      env2.appendChild(env22);
*/
      // fill in the cdr hosts
      
      //fillInServers(dvrNode, DVR_DIR);
      //fillInServers(heartbeatNode, HEARTBEAT_DIR);
    
    }
    catch (FailedToWriteFileException ftwfex)
    {

      // not much we can do about it.
    }

    return baseDocument;

  }

  /**
   * 
   * @param serversElement
   * @param dirName
   * 
   * @throws IOException
   */
  private static void fillInServers(Element serversElement, 
          String dirName) throws IOException, VPPException
  {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder parser = null;
    try
    {
      parser = dbf.newDocumentBuilder();
    }
    catch(ParserConfigurationException e1)
    {
      e1.printStackTrace();
      return;
    }
    NodeList nodes = serversElement.getElementsByTagName("server");
    Vector vector = new Vector(nodes.getLength());

    for (int i = 0; i < nodes.getLength(); i++)
    {
      vector.addElement(nodes.item(i));
    }

    for (int i = 0; i < vector.size(); i++)
    {
      Element serverElement = (Element) vector.elementAt(i);
      Node serverParent = serverElement.getParentNode();
      String serverFileName = (serverElement.getAttribute("host") + ":" 
              + serverElement.getAttribute("port"));

      System.out.println("looking for " + serverFileName);

      StringReader reader = 
        new StringReader(AdministrativeLogin.getConnection().doGet(dirName, 
              serverFileName));

      try
      {
        Document serverDocument = parser.parse(new InputSource(reader));
        Element serverNode = (Element) (baseDocument.importNode
          (serverDocument.getDocumentElement(), true));

        serverNode.setAttribute("fileDir", dirName);
        serverNode.setAttribute("fileName", serverFileName);
        serverNode.setAttribute("fileType", Integer.toString(FEATURE_SERVER));
        //System.out.println("___________________________________________________________________");
        //System.out.println(serverNode.toString());
        //System.out.println(serverElement.toString());
        serverParent.replaceChild(serverNode, serverElement);
      }
      catch (SAXException e)
      {
        System.out.println("bad XML: " + reader.toString());
        e.printStackTrace();
      }
    }
  }

  private static void fillInClient(Element uaclientElement, 
          String dirName) throws IOException, VPPException
  {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder parser = null;
    try
    {
      parser = dbf.newDocumentBuilder();
    }
    catch(ParserConfigurationException e1)
    {
      e1.printStackTrace();
      return;
    }
    NodeList nodes = uaclientElement.getElementsByTagName("server");
    Vector vector = new Vector(nodes.getLength());

    for (int i = 0; i < nodes.getLength(); i++)
    {
      vector.addElement(nodes.item(i));
    }

    for (int i = 0; i < vector.size(); i++)
    {
      Element uaElement = (Element) vector.elementAt(i);
      Node uaParent = uaElement.getParentNode();
      String uaFileName = (uaElement.getAttribute("host") + ":" 
              + uaElement.getAttribute("port"));

      System.out.println("looking for " + uaFileName);

      StringReader reader = 
        new StringReader(AdministrativeLogin.getConnection().doGet(dirName, 
        		uaFileName));

      try
      { 
        Document uaDocument = parser.parse(new InputSource(reader));
        Element uaNode = (Element) (baseDocument.importNode
          (uaDocument.getDocumentElement(), true));
        
        uaNode.setAttribute("fileDir", dirName);
        uaNode.setAttribute("fileName", uaFileName);
        uaNode.setAttribute("fileType", Integer.toString(FEATURE_SERVER));
        
        //System.out.println(uaNode.toString());
        //System.out.println(uaElement.toString());
        uaParent.replaceChild(uaNode, uaElement);
      }
      catch (SAXException e)
      {
        System.out.println("bad XML: " + reader.toString());
        e.printStackTrace();
      }
    }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -