1 /*
2  * Copyright (c) 2004, 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 sun.tools.jstat;
27 
28 import java.util.*;
29 import sun.jvmstat.monitor.*;
30 
31 /**
32  * A class for formatting raw counter output.
33  *
34  * @author Brian Doherty
35  * @since 1.5
36  */
37 public class RawOutputFormatter implements OutputFormatter {
38     private List<Monitor> logged;
39     private String header;
40     private boolean printStrings;
41 
RawOutputFormatter(List<Monitor> logged, boolean printStrings)42     public RawOutputFormatter(List<Monitor> logged, boolean printStrings) {
43         this.logged = logged;
44         this.printStrings = printStrings;
45     }
46 
getHeader()47     public String getHeader() throws MonitorException {
48         if (header == null) {
49             // build the header string and prune out any unwanted monitors
50             StringBuilder headerBuilder = new StringBuilder();
51             for (Iterator<Monitor> i = logged.iterator(); i.hasNext(); /* empty */ ) {
52                 Monitor m = i.next();
53                 headerBuilder.append(m.getName()).append(' ');
54             }
55             header = headerBuilder.toString();
56         }
57         return header;
58     }
59 
getRow()60     public String getRow() throws MonitorException {
61         StringBuilder row = new StringBuilder();
62         int count = 0;
63         for (Iterator<Monitor> i = logged.iterator(); i.hasNext(); /* empty */ ) {
64             Monitor m = i.next();
65             if (count++ > 0) {
66                 row.append(" ");
67             }
68             if (printStrings && m instanceof StringMonitor) {
69                 row.append("\"").append(m.getValue()).append("\"");
70             } else {
71                 row.append(m.getValue());
72             }
73         }
74         return row.toString();
75     }
76 }
77