1 /*
   2  * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package com.sun.xml.internal.stream.events ;
  27 
  28 import javax.xml.stream.events.StartDocument;
  29 import javax.xml.stream.Location;
  30 import javax.xml.stream.XMLStreamConstants;
  31 
  32 /** Implementation of StartDocumentEvent.
  33  *
  34  * @author Neeraj Bajaj Sun Microsystems,Inc.
  35  * @author K.Venugopal Sun Microsystems,Inc.
  36  *
  37  */
  38 
  39 public class StartDocumentEvent extends DummyEvent
  40 implements StartDocument {
  41 
  42     protected String fSystemId;
  43     protected String fEncodingScheam;
  44     protected boolean fStandalone;
  45     protected String fVersion;
  46     private boolean fEncodingSchemeSet = false;
  47     private boolean fStandaloneSet = false;
  48     private boolean nestedCall = false;
  49 
  50     public StartDocumentEvent() {
  51         init("UTF-8","1.0",true,null);
  52     }
  53 
  54     public StartDocumentEvent(String encoding){
  55         init(encoding,"1.0",true,null);
  56     }
  57 
  58     public StartDocumentEvent(String encoding, String version){
  59         init(encoding,version,true,null);
  60     }
  61 
  62     public StartDocumentEvent(String encoding, String version, boolean standalone){
  63         this.fStandaloneSet = true;
  64         init(encoding,version,standalone,null);
  65     }
  66 
  67     public StartDocumentEvent(String encoding, String version, boolean standalone,Location loc){
  68         this.fStandaloneSet = true;
  69         init(encoding, version, standalone, loc);
  70     }
  71     protected void init(String encoding, String version, boolean standalone,Location loc) {
  72         setEventType(XMLStreamConstants.START_DOCUMENT);
  73         this.fEncodingScheam = encoding;
  74         this.fVersion = version;
  75         this.fStandalone = standalone;
  76         if (encoding != null && !encoding.equals(""))
  77             this.fEncodingSchemeSet = true;
  78         else {
  79             this.fEncodingSchemeSet = false;
  80             this.fEncodingScheam = "UTF-8";
  81         }
  82         this.fLocation = loc;
  83     }
  84 
  85     public String getSystemId() {
  86         if(fLocation == null )
  87             return "";
  88         else
  89             return fLocation.getSystemId();
  90     }
  91 
  92 
  93     public String getCharacterEncodingScheme() {
  94         return fEncodingScheam;
  95     }
  96 
  97     public boolean isStandalone() {
  98         return fStandalone;
  99     }
 100 
 101     public String getVersion() {
 102         return fVersion;
 103     }
 104 
 105     public void setStandalone(boolean flag) {
 106         fStandaloneSet = true;
 107         fStandalone = flag;
 108     }
 109 
 110     public void setStandalone(String s) {
 111         fStandaloneSet = true;
 112         if(s == null) {
 113             fStandalone = true;
 114             return;
 115         }
 116         if(s.equals("yes"))
 117             fStandalone = true;
 118         else
 119             fStandalone = false;
 120     }
 121 
 122     public boolean encodingSet() {
 123         return fEncodingSchemeSet;
 124     }
 125 
 126     public boolean standaloneSet() {
 127         return fStandaloneSet;
 128     }
 129 
 130     public void setEncoding(String encoding) {
 131         fEncodingScheam = encoding;
 132     }
 133 
 134     void setDeclaredEncoding(boolean value){
 135         fEncodingSchemeSet = value;
 136     }
 137 
 138     public void setVersion(String s) {
 139         fVersion = s;
 140     }
 141 
 142     void clear() {
 143         fEncodingScheam = "UTF-8";
 144         fStandalone = true;
 145         fVersion = "1.0";
 146         fEncodingSchemeSet = false;
 147         fStandaloneSet = false;
 148     }
 149 
 150     public String toString() {
 151         String s = "<?xml version=\"" + fVersion + "\"";
 152         s = s + " encoding='" + fEncodingScheam + "'";
 153         if(fStandaloneSet) {
 154             if(fStandalone)
 155                 s = s + " standalone='yes'?>";
 156             else
 157                 s = s + " standalone='no'?>";
 158         } else {
 159             s = s + "?>";
 160         }
 161         return s;
 162     }
 163 
 164     public boolean isStartDocument() {
 165         return true;
 166     }
 167 
 168     protected void writeAsEncodedUnicodeEx(java.io.Writer writer)
 169     throws java.io.IOException
 170     {
 171         writer.write(toString());
 172     }
 173 }