extensions/no.uib.cbu.base.magetabexport/trunk/src/main/java/no/uib/cbu/base/magetabexport/Utils.java

Code
Comments
Other
Rev Date Author Line
1474 29 Nov 11 pawels 1 /*******************************************************************************
1474 29 Nov 11 pawels 2  * Copyright (c) 2011 The Norwegian Microarray Consortium.
1474 29 Nov 11 pawels 3  * All rights reserved. This program and the accompanying materials
1474 29 Nov 11 pawels 4  * are made available under the terms of the GNU Public License v3.0
1474 29 Nov 11 pawels 5  * which accompanies this distribution, and is available at
1474 29 Nov 11 pawels 6  * http://www.gnu.org/licenses/gpl-3.0.html
1474 29 Nov 11 pawels 7  * 
1474 29 Nov 11 pawels 8  * Contributors:
1474 29 Nov 11 pawels 9  *     The Norwegian Microarray Consortium - initial API and implementation
1474 29 Nov 11 pawels 10  ******************************************************************************/
1474 29 Nov 11 pawels 11 package no.uib.cbu.base.magetabexport;
1474 29 Nov 11 pawels 12
1474 29 Nov 11 pawels 13 import java.io.OutputStream;
1474 29 Nov 11 pawels 14
1474 29 Nov 11 pawels 15 import net.sf.basedb.core.BaseException;
1474 29 Nov 11 pawels 16 import net.sf.basedb.core.DbControl;
1474 29 Nov 11 pawels 17 import net.sf.basedb.core.Directory;
1474 29 Nov 11 pawels 18 import net.sf.basedb.core.File;
1474 29 Nov 11 pawels 19 import net.sf.basedb.core.Path;
1474 29 Nov 11 pawels 20 import net.sf.basedb.core.SessionControl;
1474 29 Nov 11 pawels 21 import net.sf.basedb.core.User;
1474 29 Nov 11 pawels 22
1474 29 Nov 11 pawels 23 public class Utils {
1474 29 Nov 11 pawels 24
1474 29 Nov 11 pawels 25   /**
1474 29 Nov 11 pawels 26    * Returns an OutputStream to a file. If the file is has to be created,
1474 29 Nov 11 pawels 27    * the method handles saving and reattaching it to DbControl
1474 29 Nov 11 pawels 28    * 
1474 29 Nov 11 pawels 29    * @param filepath - filepath to the file
1474 29 Nov 11 pawels 30    * @param overwrite - flag indicating if the file should be overwritten, 
1474 29 Nov 11 pawels 31    *             if the path points to already existing file
1474 29 Nov 11 pawels 32    * @param dc - DbControl
1474 29 Nov 11 pawels 33    * @return
1474 29 Nov 11 pawels 34    */
1474 29 Nov 11 pawels 35   public static OutputStream getOutputStreamForPath(String filepath, boolean overwrite, DbControl dc) {
1474 29 Nov 11 pawels 36     File f = File.getByPath(dc, new Path(filepath, Path.Type.FILE), overwrite);
1474 29 Nov 11 pawels 37     if (f.isDetached()) {
1474 29 Nov 11 pawels 38       dc.saveItem(f);
1474 29 Nov 11 pawels 39       dc.reattachItem(f, true);
1474 29 Nov 11 pawels 40     }
1474 29 Nov 11 pawels 41     return f.getUploadStream(false);
1474 29 Nov 11 pawels 42   }
1474 29 Nov 11 pawels 43   
1474 29 Nov 11 pawels 44   
1474 29 Nov 11 pawels 45   /**
1474 29 Nov 11 pawels 46    * Gets the currently logged in user default directory
1474 29 Nov 11 pawels 47    * 
1474 29 Nov 11 pawels 48    * @param sc - the session control
1474 29 Nov 11 pawels 49    * @return path of the user directory as a string object
1474 29 Nov 11 pawels 50    */
1474 29 Nov 11 pawels 51   public static String getUserDefaultDirectory(SessionControl sc) {
1474 29 Nov 11 pawels 52     DbControl dc = sc.newDbControl();
1474 29 Nov 11 pawels 53     String p = "";
1474 29 Nov 11 pawels 54     try {
1474 29 Nov 11 pawels 55       User user = User.getById(dc, sc.getLoggedInUserId());
1474 29 Nov 11 pawels 56       Directory dir = user.getHomeDirectory();
1474 29 Nov 11 pawels 57       Path path = dir.getPath();
1474 29 Nov 11 pawels 58       p = path.toString();
1474 29 Nov 11 pawels 59     } catch (Exception e) {
1474 29 Nov 11 pawels 60       new BaseException(e.getMessage());
1474 29 Nov 11 pawels 61     } finally {
1474 29 Nov 11 pawels 62       if (dc != null) { dc.close(); }
1474 29 Nov 11 pawels 63     }
1474 29 Nov 11 pawels 64     return p;
1474 29 Nov 11 pawels 65   }
1474 29 Nov 11 pawels 66
1474 29 Nov 11 pawels 67
1474 29 Nov 11 pawels 68   /**
1474 29 Nov 11 pawels 69    * If subject is not null and it ends with trailingString then
1474 29 Nov 11 pawels 70    * n characters from subject's end are removed, where n is the length of the 
1474 29 Nov 11 pawels 71    * trailingString. Otherwise subject is returned with no change.
1474 29 Nov 11 pawels 72    * @param subject - string to remove end from
1474 29 Nov 11 pawels 73    * @param trailingString - the trailing sequence to trim
1474 29 Nov 11 pawels 74    * @return
1474 29 Nov 11 pawels 75    */
1474 29 Nov 11 pawels 76   public static String removeTrailingString(String subject, String trailingString) {
1474 29 Nov 11 pawels 77     if (subject != null && subject.endsWith(trailingString)) {
1474 29 Nov 11 pawels 78       return subject.substring(0,subject.length() - trailingString.length());
1474 29 Nov 11 pawels 79     } 
1474 29 Nov 11 pawels 80     return subject;
1474 29 Nov 11 pawels 81   }
1474 29 Nov 11 pawels 82
1474 29 Nov 11 pawels 83
1474 29 Nov 11 pawels 84   public static String quote(String s) {
1474 29 Nov 11 pawels 85       
1474 29 Nov 11 pawels 86     boolean quote = MageTabExporterSettings.QUOTE;
1474 29 Nov 11 pawels 87     String mv = MageTabExporterSettings.REPLACE_MISSING_VALUE_WITH;
1474 29 Nov 11 pawels 88     if (s == null) { 
1474 29 Nov 11 pawels 89       return quote ? "\""+mv+"\"" : mv ; 
1474 29 Nov 11 pawels 90     }
1474 29 Nov 11 pawels 91   
1474 29 Nov 11 pawels 92     // if s contains line breaks, remove them
1474 29 Nov 11 pawels 93     s = s.replace("\n", " ");
1474 29 Nov 11 pawels 94     s = s.replace("\r", " ");
1474 29 Nov 11 pawels 95     s = s.trim();
1474 29 Nov 11 pawels 96     return quote ? "\""+s+"\"" : s;
1474 29 Nov 11 pawels 97   }
1474 29 Nov 11 pawels 98
1474 29 Nov 11 pawels 99 }