|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.lib.cvsclient.command.unedit; import java.io.*; import org.netbeans.lib.cvsclient.*; import org.netbeans.lib.cvsclient.admin.*; import org.netbeans.lib.cvsclient.command.*; import org.netbeans.lib.cvsclient.command.edit.*; import org.netbeans.lib.cvsclient.connection.*; import org.netbeans.lib.cvsclient.event.*; import org.netbeans.lib.cvsclient.file.*; import org.netbeans.lib.cvsclient.request.*; /** * @author Thomas Singer */ public class UneditCommand extends BasicCommand { private Watch temporaryWatch; /** * Construct a new editors command. */ public UneditCommand() { resetCVSCommand(); } /** * Execute the command. * * @param client the client services object that provides any necessary * services to this command, including the ability to actually * process all the requests. */ public void execute(ClientServices clientServices, EventManager eventManager) throws CommandException, AuthenticationException { clientServices.ensureConnection(); try { super.execute(clientServices, eventManager); addRequestForWorkingDirectory(clientServices); addRequest(CommandRequest.NOOP); clientServices.processRequests(requests); } catch (CommandException ex) { throw ex; } catch (EOFException ex) { throw new CommandException(ex, CommandException.getLocalMessage("CommandException.EndOfFile", null)); //NOI18N } catch (Exception ex) { throw new CommandException(ex, ex.getLocalizedMessage()); } finally { requests.clear(); } } protected void addRequestForFile(File file, Entry entry) { String temporaryWatch = Watch.getWatchString(getTemporaryWatch()); requests.add(new NotifyRequest(file, "U", temporaryWatch)); // NOI18N try { uneditFile(file); } catch (IOException ex) { // ignore } } /** * Called when server responses with "ok" or "error", (when the command * finishes). */ public void commandTerminated(TerminationEvent e) { if (builder != null) { builder.outputDone(); } } /** * This method returns how the tag command would looklike when typed on the * command line. */ public String getCVSCommand() { StringBuffer cvsCommandLine = new StringBuffer("unedit "); //NOI18N cvsCommandLine.append(getCVSArguments()); appendFileArguments(cvsCommandLine); return cvsCommandLine.toString(); } /** * Takes the arguments and sets the command. * To be mainly used for automatic settings (like parsing the .cvsrc file) * @return true if the option (switch) was recognized and set */ public boolean setCVSCommand(char opt, String optArg) { if (opt == 'R') { setRecursive(true); } else if (opt == 'l') { setRecursive(false); } else { return false; } return true; } /** * String returned by this method defines which options are available for * this command. */ public String getOptString() { return "Rl"; //NOI18N } /** * Resets all switches in the command. * After calling this method, the command should have no switches defined * and should behave defaultly. */ public void resetCVSCommand() { setRecursive(true); } /** * Returns the arguments of the command in the command-line style. * Similar to getCVSCommand() however without the files and command's name */ public String getCVSArguments() { StringBuffer cvsArguments = new StringBuffer(); if (!isRecursive()) { cvsArguments.append("-l "); //NOI18N } return cvsArguments.toString(); } /** * Returns the temporary watch. */ public Watch getTemporaryWatch() { return temporaryWatch; } /** * Sets the temporary watch. */ public void setTemporaryWatch(Watch temporaryWatch) { this.temporaryWatch = temporaryWatch; } private void uneditFile(File file) throws IOException { removeBaserevEntry(file); EditCommand.getEditBackupFile(file).delete(); FileUtils.setFileReadOnly(file, true); } private void removeBaserevEntry(File file) throws IOException { File baserevFile = new File(file.getParentFile(), "CVS/Baserev"); // NOI18N File backupFile = new File(baserevFile.getAbsolutePath() + '~'); BufferedReader reader = null; BufferedWriter writer = null; final String entryStart = 'B' + file.getName() + '/'; try { writer = new BufferedWriter(new FileWriter(backupFile)); reader = new BufferedReader(new FileReader(baserevFile)); for (String line = reader.readLine(); line != null; line = reader.readLine()) { if (line.startsWith(entryStart)) { continue; } writer.write(line); writer.newLine(); } } catch (FileNotFoundException ex) { // ignore } finally { if (writer != null) { try { writer.close(); } catch (IOException ex) { // ignore } } if (reader != null) { try { reader.close(); } catch (IOException ex) { // ignore } } } baserevFile.delete(); if (backupFile.length() > 0) { backupFile.renameTo(baserevFile); } else { backupFile.delete(); } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.