[Unicode]   Common Locale Data Repository : Bug Tracking Home | Site Map | Search
 

Changeset 9569


Ignore:
Timestamp:
12/17/13 21:06:57 (5 years ago)
Author:
srloomis
Message:

cldrbug 6740: check in step-by-step setup

Location:
trunk/tools/cldr-apps
Files:
13 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/tools/cldr-apps

  • trunk/tools/cldr-apps/.classpath

  • trunk/tools/cldr-apps/WebContent

  • trunk/tools/cldr-apps/WebContent/AdminAjax.jsp

    r8790 r9569  
    3232                new JSONWriter(out).object().key("users").value(users) 
    3333                                .endObject(); 
    34  
     34//      } else if (action.equals("verifycheckout")) { 
     35//              CLDRConfig cconfig = CLDRConfig.getInstance(); 
     36                 
     37//              CookieSession.sm.ensureOrCheckout(out, "CLDR_DIR", new java.io.File(cconfig.getProperty("CLDR_DIR")), SurveyMain.CLDR_DIR_REPOS); 
    3538        } else if (action.equals("threads")) { 
    3639 
  • trunk/tools/cldr-apps/WebContent/cldr-setup.jsp

    r9568 r9569  
    139139                                        <body> 
    140140                                        <h1>SurveyTool Configurator |  SurveyTool Not in Maintenance Mode</h1> 
    141                                          
    142141                                        <ul> 
    143142                                                <li>To reconfigure the SurveyTool, click the following button, then restart the web server: 
     
    174173        } 
    175174        %> 
    176         <h1>Now, restart the web server and then click this button to go to the Admin page:</h1> 
    177                                                                                 <form action="<%= request.getContextPath() %>/survey?vap=" METHOD="GET"> 
     175        <h1>Now, restart the web server and then click this button to go to the SurveyTool:</h1> 
     176                                                                                <form action="<%= request.getContextPath() %>/survey" METHOD="GET"> 
    178177                                                                        <input  type='submit' value='Return to the SurveyTool' /></form> 
    179178 
  • trunk/tools/cldr-apps/WebContent/index.jsp

    r8937 r9569  
    3838                        <li><strong><a href="survey/">CLDR Survey Tool 
    3939                        </a></strong> - <a href='<%= SurveyMain.GENERAL_HELP_URL %>'>(Instructions)</a> 
    40                         <% if(SurveyMain.isBusted()) {          %> 
     40                        <% if(SurveyMain.isMaintenance()) { %> 
     41                          <span style='color: red;'>setup mode</span> 
     42                        <% } else if(SurveyMain.isBusted()) {           %> 
    4143                          <span style='color: red;'>offline</span> 
    4244            <% } else if(!SurveyMain.isSetup) { %> 
  • trunk/tools/cldr-apps/WebContent/surveytool.css

    r8911 r9569  
    15321532    padding-left: 2em; 
    15331533    background: #DDFFDD url(okay.png) no-repeat 0.25em center; 
     1534} 
     1535.squoText { 
     1536    padding-left: 2em; 
     1537    background: #DDFFDD url(squo.png) no-repeat 0.25em center; 
    15341538} 
    15351539.stopText { 
     
    31183122    font-weight: normal; 
    31193123} 
     3124 
     3125.st_setup_text { 
     3126        padding: 0.5em; 
     3127        font-size: large; 
     3128} 
     3129 
     3130ol.st_setup { 
     3131         
     3132} 
     3133 
     3134ol.st_setup li { 
     3135        margin-bottom: 1em; 
     3136} 
     3137 
     3138div.st_setup  { 
     3139        font-size: x-large; 
     3140        padding: 1em; 
     3141        background-color: #ddf; 
     3142} 
  • trunk/tools/cldr-apps/build.xml

  • trunk/tools/cldr-apps/src

  • trunk/tools/cldr-apps/src/org/unicode/cldr/util/CLDRConfigImpl.java

    r9469 r9569  
    2222public class CLDRConfigImpl extends CLDRConfig implements JSONString { 
    2323 
     24    public static final String CLDR_PROPERTIES = "cldr.properties"; 
    2425    /** 
    2526     *  
     
    9697            } 
    9798            homeFile = new File(homeParent, "cldr"); 
    98             propFile = new File(homeFile, "cldr.properties"); 
     99            propFile = new File(homeFile, CLDR_PROPERTIES); 
    99100            if (!propFile.exists()) { 
    100101                System.err.println("Does not exist: " + propFile.getAbsolutePath()); 
     
    108109        } else { 
    109110            homeFile = new File(cldrHome); 
    110             propFile = new File(homeFile, "cldr.properties"); 
     111            propFile = new File(homeFile, CLDR_PROPERTIES); 
    111112        } 
    112113 
     
    151152        isInitted = true; 
    152153    } 
     154     
     155    public void writeHelperFile(String hostportpath, File helperFile) throws IOException { 
     156        if (!helperFile.exists()) { 
     157            OutputStream file = new FileOutputStream(helperFile, false); // Append 
     158            PrintWriter pw = new PrintWriter(file); 
     159            String vap = (String)survprops.get("CLDR_VAP"); 
     160            pw.write("<h3>Survey Tool admin interface link</h3>"); 
     161            pw.write("If the SurveyTool is in maintenance mode, you can configure it here: "); 
     162            String url0 = hostportpath + "cldr-setup.jsp" + "?vap=" + vap; 
     163            pw.write("<b>SurveyTool Setup:</b>  <a href='" + url0 + "'>" + url0 + "</a><hr>"); 
     164            String url = hostportpath + ("AdminPanel.jsp") + "?vap=" + vap; 
     165            pw.write("<b>Admin Panel:</b>  <a href='" + url + "'>" + url + "</a>"); 
     166            pw.write("<hr>if you change the admin password ( CLDR_VAP in config.properties ), please: 1. delete this admin.html file 2. restart the server 3. navigate back to the main SurveyTool page.<p>"); 
     167            pw.close(); 
     168            file.close(); 
     169        } 
     170    } 
    153171 
    154172    private void createBasicCldr(File homeFile) { 
     
    157175        try { 
    158176            homeFile.mkdir(); 
    159             File propsFile = new File(homeFile, "cldr.properties"); 
     177            File propsFile = new File(homeFile, CLDR_PROPERTIES); 
    160178            OutputStream file = new FileOutputStream(propsFile, false); // Append 
    161179            PrintWriter pw = new PrintWriter(file); 
     
    169187            pw.println("## SurveyTool must be reloaded, or the web server restarted, \n## for these to take effect."); 
    170188            pw.println(); 
     189            pw.println("## Put the SurveyTool in setup mode. This enables cldr-setup.jsp?vap=(CLDR_VAP)"); 
     190            pw.println("CLDR_MAINTENANCE=true"); 
     191            pw.println(); 
    171192            pw.println("## your password. Login as user 'admin@' and this password for admin access."); 
    172193            pw.println("CLDR_VAP=" + UserRegistry.makePassword("admin@")); 
     
    177198            pw.println("## Special message shown to users as to why survey tool is down."); 
    178199            pw.println("## Comment out for normal start-up."); 
    179             pw.println("CLDR_MESSAGE=Welcome to SurveyTool@" + SurveyMain.localhost() + ". Please edit " 
    180                 + propsFile.getAbsolutePath() + ". Comment out CLDR_MESSAGE to continue normal startup."); 
     200            pw.println("#CLDR_MESSAGE="); 
    181201            pw.println(); 
    182202            pw.println("## Special message shown to users."); 
  • trunk/tools/cldr-apps/src/org/unicode/cldr/web/BallotBox.java

  • trunk/tools/cldr-apps/src/org/unicode/cldr/web/DBUtils.java

    r9557 r9569  
    13761376                sb.insert( 
    13771377                    0, 
    1378                     "</pre>Read the rest of this exception - but, you may be able to add the following to your <b>context.xml</b> file:  <br><br><pre class='graybox adminExceptionLogsite'>" 
     1378                    "</pre>Read the rest of this notice - for derby, add the following to <b>context.xml</b> file:  <br><br><pre class='graybox adminExceptionLogsite'>" 
    13791379                        + "&lt;Resource name=\"jdbc/SurveyTool\" type=\"javax.sql.DataSource\" auth=\"Container\" \n" 
    13801380                        + "description=\"database for ST\" maxActive=\"100\" maxIdle=\"30\" maxWait=\"10000\" \n" 
  • trunk/tools/cldr-apps/src/org/unicode/cldr/web/STFactory.java

  • trunk/tools/cldr-apps/src/org/unicode/cldr/web/SurveyMain.java

    r9557 r9569  
    5757import javax.servlet.http.HttpServletRequest; 
    5858import javax.servlet.http.HttpServletResponse; 
     59import javax.servlet.jsp.JspWriter; 
    5960 
    6061import org.json.JSONArray; 
     
    123124public class SurveyMain extends HttpServlet implements CLDRProgressIndicator, Externalizable { 
    124125 
     126    public static final String CLDR_DIR = "CLDR_DIR"; 
     127    public static final String CLDR_DIR_REPOS = "http://unicode.org/repos/cldr/trunk"; 
     128 
    125129    public static final String NEWVERSION_EPOCH = "1970-01-01 00:00:00"; 
    126130 
     
    489493 
    490494            // verify config sanity 
    491             CLDRConfigImpl.getInstance().getSupplementalDataInfo(); 
     495            CLDRConfig cconfig  = CLDRConfigImpl.getInstance(); 
     496             
     497            stopIfMaintenance(); 
     498             
     499            cconfig.getSupplementalDataInfo(); 
    492500 
    493501            PathHeader.PageId.forString(PathHeader.PageId.Africa.name()); // Make 
     
    676684 
    677685        String baseThreadName = Thread.currentThread().getName(); 
    678  
    679         // helper file 
    680         if (CLDRConfig.getInstance().getEnvironment() == Environment.LOCAL) { 
    681             File helperFile = new File(getSurveyHome(), "admin.html"); 
    682             if (!helperFile.exists()) { 
    683                 OutputStream file = new FileOutputStream(helperFile, false); // Append 
    684                 PrintWriter pw = new PrintWriter(file); 
    685                 pw.write("<h3>Survey Tool admin interface link</h3>"); 
    686                 pw.write("if you change the admin password ( CLDR_VAP in config.properties ), you will also need to change this link.<p>"); 
    687                 String url = ctx.schemeHostPort() + ctx.context("AdminPanel.jsp") + "?vap=" + vap; 
    688                 pw.write("<b>Admin Panel:</b>  <a href='" + url + "'>" + url + "</a>"); 
    689                 pw.close(); 
    690                 file.close(); 
    691             } 
    692         } 
    693686 
    694687        try { 
     
    780773        setInstance(request); 
    781774        if (!isSetup) { 
     775             
     776            stopIfMaintenance(request); 
     777             
    782778            boolean isGET = "GET".equals(request.getMethod()); 
    783779            int sec = 600; // was 4 
     
    819815                out.println("</p></div>"); 
    820816            } 
    821             if (isBusted != null) { 
     817            if(isMaintenance()) { 
     818                final File maintFile = getHelperFile(); 
     819                final String maintMessage = getMaintMessage(maintFile, request); 
     820                out.println("<h2>Setting up the SurveyTool</h2>"); 
     821                out.println("<div class='st_setup'>"); 
     822                out.println(maintMessage); // TODO 
     823                out.println("</div>"); 
     824                out.println("<hr>"); 
     825            } else if (isBusted != null) { 
    822826                out.println(SHOWHIDE_SCRIPT); 
    823827                out.println("<script type=\"text/javascript\">clickContinue = '" + loadOnOk + "';</script>"); 
     
    862866            out.println("<script type=\"text/javascript\">loadOnOk = '" + loadOnOk + "';</script>"); 
    863867            out.println("<script type=\"text/javascript\">clickContinue = '" + loadOnOk + "';</script>"); 
    864             if (!isGET) { 
    865                 out.println("(Sorry,  we can't automatically retry your " + request.getMethod() 
    866                     + " request - you may attempt Reload in a few seconds " + "<a href='" + base + "'>or click here</a><br>"); 
    867             } else { 
    868                 out.println("If this page does not load in " + sec + " seconds, you may <a href='" + base 
    869                     + "'>click here to go to the main Survey Tool page</a>"); 
    870             } 
    871  
     868            if(!isMaintenance()) { 
     869                if (!isGET) { 
     870                    out.println("(Sorry,  we can't automatically retry your " + request.getMethod() 
     871                        + " request - you may attempt Reload in a few seconds " + "<a href='" + base + "'>or click here</a><br>"); 
     872                } else { 
     873                    out.println("If this page does not load in " + sec + " seconds, you may <a href='" + base 
     874                        + "'>click here to go to the main Survey Tool page</a>"); 
     875                } 
     876            } 
    872877            out.println("<noscript><h1>JavaScript is required for logging into the SurveyTool.</h1></noscript>"); 
    873878            out.print(sysmsg("startup_footer")); 
     
    11901195    } 
    11911196 
     1197    private boolean twidGetBool(String key) { 
     1198        return twidGetBool(key, false); 
     1199    } 
     1200 
    11921201    public void twidPut(String key, boolean val) { 
    11931202        twidHash.put(key, new Boolean(val)); 
     
    43644373        if (gFactory == null) { 
    43654374            CLDRConfig config = CLDRConfig.getInstance(); 
    4366             ensureOrCheckout("CLDR_DIR", config.getCldrBaseDirectory(), "http://unicode.org/repos/cldr/trunk"); 
     4375            // may fail at server startup time- should do this through setup mode 
     4376            ensureOrCheckout(null, "CLDR_DIR", config.getCldrBaseDirectory(), CLDR_DIR_REPOS); 
    43674377            // verify readable 
    43684378            File root = new File(config.getCldrBaseDirectory(), "common/main"); 
     
    43784388    } 
    43794389 
    4380     private void ensureOrCheckout(final String param, final File dir, final String url) { 
     4390    public void ensureOrCheckout(JspWriter o, final String param, final File dir, final String url) { 
    43814391        if(dir == null) { 
    43824392          busted("Configuration Error: " + param + " is not set.");   
    43834393        } else if (!dir.isDirectory()) { 
     4394             
     4395            if(o==null) { 
     4396                busted("Not able to checkout " + dir.getAbsolutePath() + " for " + param + " - go into setup mode."); 
     4397                return; /* NOTREACHED */ 
     4398            } 
    43844399            try { 
    43854400                ElapsedTimer et = new ElapsedTimer(); 
     
    43894404                } 
    43904405                 
    4391                 System.err.println(param + " directory " + dir.getAbsolutePath() + " did not exist - checking out " + url 
     4406                 
     4407                o.println(param + " directory " + dir.getAbsolutePath() + " did not exist - checking out " + url 
    43924408                    + " - if this is not desired, modify " + param + " in cldr.properties. THIS MAY TAKE A WHILE!"); 
    43934409 
     
    44214437//                long res2[] = getOutputFileManager().svnUpdate(fileArray, SVNRevision.create(res), SVNDepth.INFINITY, 
    44224438//                        true, true); 
    4423                 System.err.println("Checked out " + url + " r " + res + " to " + dir.getAbsolutePath() + " - see the value of " 
     4439                o.println("Checked out " + url + " r " + res + " to " + dir.getAbsolutePath() + " - see the value of " 
    44244440                    + param + " if you want to have a different location.  Took: " + et); 
    44254441//                for(int i=0;i<res2.length;i++) { 
    4426 //                    System.err.println(res2[i]+ " " + fileArray[i]); 
     4442//                    o.println(res2[i]+ " " + fileArray[i]); 
    44274443//                } 
    44284444            } catch (SVNException e) { 
     4445                final String msg = "Checking out " + url + " into " + dir.getAbsolutePath(); 
     4446                SurveyLog.logException(e, msg); 
     4447                busted(msg, e); 
     4448                throw new InternalError(msg); 
     4449            } catch (IOException e) { 
    44294450                final String msg = "Checking out " + url + " into " + dir.getAbsolutePath(); 
    44304451                SurveyLog.logException(e, msg); 
     
    57305751 
    57315752            isConfigSetup = true; 
    5732  
     5753             
    57335754            cldrHome = survprops.getProperty("CLDRHOME"); 
     5755            stopIfMaintenance(); 
    57345756 
    57355757            progress.update("Setup DB config"); 
     
    59165938                + "----------------------------\n\n\n"); 
    59175939        } 
     5940    } 
     5941 
     5942    public static void stopIfMaintenance() { 
     5943        stopIfMaintenance(null); 
     5944    } 
     5945     
     5946    public static void stopIfMaintenance(HttpServletRequest request) { 
     5947        if(isMaintenance()) { 
     5948            final File maintFile = getHelperFile(); 
     5949            final String maintMessage = getMaintMessage(maintFile, request); 
     5950            if(!maintFile.exists()) { 
     5951                busted("SurveyTool is in setup mode. Please view the main page such as http://127.0.0.1:8080/cldr-apps/survey/ so we can generate a helper file."); 
     5952            } else { 
     5953                isBusted=null; // reset busted notice 
     5954                busted(maintMessage); 
     5955            } 
     5956        } 
     5957    } 
     5958 
     5959    private static String getMaintMessage(final File maintFile, HttpServletRequest request) { 
     5960        if(!maintFile.exists() && request!=null) { 
     5961            try { 
     5962                writeHelperFile(request, maintFile); 
     5963            } catch (IOException e) { 
     5964                busted("Trying to write helper file " + maintFile.getAbsolutePath(), e); 
     5965            } 
     5966        } 
     5967        if(maintFile.exists()) { 
     5968            final String maintMessage = "SurveyTool is in setup mode. <br><b>Administrator</b>: Please open the file <a href='file://"+maintFile.getAbsolutePath()+"'>"+maintFile.getAbsolutePath()+"</a>" + " for more instructions. <br><b>Users:</b> you must wait until the SurveyTool is back online."; 
     5969            return maintMessage; 
     5970        }  else {  
     5971            return null; 
     5972        } 
     5973    } 
     5974 
     5975    public static void writeHelperFile(HttpServletRequest request, File maintFile) throws IOException { 
     5976        CLDRConfig cconfig = CLDRConfig.getInstance(); 
     5977            ((CLDRConfigImpl)cconfig).writeHelperFile(request.getScheme()+"://"+request.getServerName()+":"+ 
     5978                    request.getServerPort()+request.getContextPath()+"/", maintFile); 
     5979    } 
     5980 
     5981    public static File getHelperFile() { 
     5982        File maintFile = new File(getSurveyHome(), "admin.html"); 
     5983        return maintFile; 
     5984    } 
     5985     
     5986    public static boolean isMaintenance() { 
     5987        CLDRConfig survprops = CLDRConfig.getInstance(); 
     5988        return survprops.getProperty("CLDR_MAINTENANCE", false); 
    59185989    } 
    59195990 
     
    66586729 
    66596730    private void doStartupDB() { 
     6731        if(isMaintenance()) { 
     6732            throw new InternalError("SurveyTool is in setup mode."); 
     6733        } 
    66606734        CLDRProgressTask progress = openProgress("Database Setup"); 
    66616735        try { 
Note: See TracChangeset for help on using the changeset viewer.