Blame view

src/main/java/eu/omp/irap/vespa/epntapclient/votable/Utils.java 3.18 KB
b6256781   Nathanael Jourdane   Implement StringJ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * This file is a part of EpnTAPClient.
 * This program aims to provide EPN-TAP support for software clients, like CASSIS spectrum analyzer.
 * See draft specifications: https://voparis-confluence.obspm.fr/pages/viewpage.action?pageId=559861
 * Copyright (C) 2016 Institut de Recherche en Astrophysique et Planétologie.
 * 
 * This program is free software: you can
 * redistribute it and/or modify it under the terms of the GNU General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or (at your option) any later
 * version. This program is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE. See the GNU General Public License for more details. You should have received a copy of
 * the GNU General Public License along with this program. If not, see
 * <http://www.gnu.org/licenses/>.
 */

package eu.omp.irap.vespa.epntapclient.votable;

5d3c344e   Nathanael Jourdane   Use Java logging ...
19
20
import java.io.FileWriter;
import java.io.IOException;
b6256781   Nathanael Jourdane   Implement StringJ...
21
22
import java.util.ArrayList;
import java.util.List;
5d3c344e   Nathanael Jourdane   Use Java logging ...
23
24
25
26
27
28
import java.util.logging.Logger;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import eu.omp.irap.vespa.epntapclient.utils.Const;
b6256781   Nathanael Jourdane   Implement StringJ...
29
30
31
32
33

/**
 * @author N. Jourdane
 */
public class Utils {
5d3c344e   Nathanael Jourdane   Use Java logging ...
34
35
36
	/** The logger for the class Utils. */
	private static final Logger logger = Logger.getLogger(Utils.class.getName());

4268557f   Nathanael Jourdane   Fix some Sonar is...
37
38
39
40
	/** Private constructor to hide the implicit public one. */
	private Utils() {
	}

d3a65e87   Nathanael Jourdane   Improve Javadoc.
41
42
43
44
45
46
	/**
	 * StringJoiner has the same purpose of Java 8 StringJoiner, it has been rewritten for Java7
	 * compatibility.
	 * 
	 * @author N. Jourdane
	 */
b6256781   Nathanael Jourdane   Implement StringJ...
47
	public static class StringJoiner {
d3a65e87   Nathanael Jourdane   Improve Javadoc.
48
		/** A list of words to join, ie. ["foo", "bar"]. */
b6256781   Nathanael Jourdane   Implement StringJ...
49
		List<String> list;
d3a65e87   Nathanael Jourdane   Improve Javadoc.
50
51
52
		/** The string joiner separator to put between each word, ie. ';'. */
		String separator;
		/** The resulting string, ie. "foo;bar". */
b6256781   Nathanael Jourdane   Implement StringJ...
53
54
		String string;

d3a65e87   Nathanael Jourdane   Improve Javadoc.
55
56
57
58
59
		/**
		 * Method constructor for the String joiner.
		 * 
		 * @param separator The string joiner separator to put between each word, ie. ';'.
		 */
b6256781   Nathanael Jourdane   Implement StringJ...
60
61
		public StringJoiner(String separator) {
			this.separator = separator;
53d49e83   Nathanael Jourdane   Fix all Eclipse w...
62
			this.list = new ArrayList<>();
b6256781   Nathanael Jourdane   Implement StringJ...
63
64
65
			string = "";
		}

d3a65e87   Nathanael Jourdane   Improve Javadoc.
66
67
68
69
70
		/**
		 * add a new word to the joiner.
		 * 
		 * @param text The word to add.
		 */
b6256781   Nathanael Jourdane   Implement StringJ...
71
72
73
74
75
76
77
78
79
80
81
82
83
		public void add(String text) {
			if ("".equals(string)) {
				string = text;
			} else {
				string += separator + text;
			}
		}

		@Override
		public String toString() {
			return string;
		}
	}
5d3c344e   Nathanael Jourdane   Use Java logging ...
84
85

	/**
d3a65e87   Nathanael Jourdane   Improve Javadoc.
86
	 * Print the specified object in JSON format in a file on the temporary directory.
5d3c344e   Nathanael Jourdane   Use Java logging ...
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
	 * 
	 * @param title The name of the file.
	 * @param obj the object to print in a file.
	 * @return The path of the file.
	 */
	public static String printObject(String title, Object obj) {
		Gson gson = new GsonBuilder().setPrettyPrinting().create();
		String json = gson.toJson(obj);
		String path = Const.TMP_DIR + "/" + title + ".json";
		try (FileWriter writer = new FileWriter(path)) {
			writer.write(json);

		} catch (IOException e) {
			logger.warning("Can not print in the file " + path + e);
		}
		logger.info("A json file representing " + title + " (" + obj.getClass().getName()
				+ ") has been created on " + path);

		return path;
	}
b6256781   Nathanael Jourdane   Implement StringJ...
107
}