Initial import into git.
[galago.git] / java / pig-galago / src / com / yahoo / pig / tools / streams / StreamGenerator.java
blob1ea975b872c6925ab053b0a0b60ef1b9dde5424a
1 /*
2 * Copyright (c) 2007 Yahoo! Inc. All rights reserved.
3 * See accompanying LICENSE file.
4 */
5 package com.yahoo.pig.tools.streams;
7 /**
8 * StreamGenerator.java is a 1.4 application that
9 * demonstrates the use of JButton, JTextField and
10 * JLabel. It requires no other files.
13 import java.awt.*;
14 import java.awt.event.*;
15 import java.io.BufferedWriter;
16 import java.io.PrintWriter;
17 import java.util.Random;
19 import javax.swing.*;
21 public class StreamGenerator implements ActionListener {
22 JFrame generatorFrame;
23 JPanel generatorPanel;
24 JTextField fileField, formatField, numberField;
25 JLabel fileLabel, formatLabel, numberLabel;
26 JButton generateButton;
27 PrintWriter out = null;
28 int[] formats;
29 Random random = new Random();
31 public StreamGenerator() {
32 //Create and set up the window.
33 generatorFrame = new JFrame("Stream Generator");
34 generatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
35 generatorFrame.setSize(new Dimension(120, 40));
37 //Create and set up the panel.
38 generatorPanel = new JPanel(new GridLayout(4, 4));
40 //Add the widgets.
41 addWidgets();
43 //Set the default button.
44 generatorFrame.getRootPane().setDefaultButton(generateButton);
46 //Add the panel to the window.
47 generatorFrame.getContentPane().add(generatorPanel, BorderLayout.CENTER);
49 //Display the window.
50 generatorFrame.pack();
51 generatorFrame.setVisible(true);
54 /**
55 * Create and add the widgets.
57 private void addWidgets() {
58 //Create widgets.
59 fileField = new JTextField(10);
60 formatField = new JTextField(10);
61 numberField = new JTextField(5);
62 fileLabel = new JLabel("File", SwingConstants.LEFT);
63 generateButton = new JButton("Generate");
64 formatLabel = new JLabel("Format", SwingConstants.LEFT);
65 numberLabel = new JLabel("Number of tuples", SwingConstants.LEFT);
67 //Listen to events from the Convert button.
68 generateButton.addActionListener(this);
70 //Add the widgets to the container.
71 generatorPanel.add(fileLabel);
72 generatorPanel.add(fileField);
73 generatorPanel.add(formatLabel);
74 generatorPanel.add(formatField);
75 generatorPanel.add(numberLabel);
76 generatorPanel.add(numberField);
77 generatorPanel.add(generateButton);
80 fileLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
81 formatLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
84 public void actionPerformed(ActionEvent event) {
86 if (out == null){
88 try{
89 String fileName = fileField.getText();
90 String format = formatField.getText();
91 out = new PrintWriter(fileName);
92 String[] formats = format.split(",");
93 this.formats = new int[formats.length];
94 for (int i=0; i<formats.length; i++){
95 this.formats[i] = (int)Math.pow(10,Integer.parseInt(formats[i]));
97 }catch(Exception e){
98 new Dialog(generatorFrame,"Input not well formed");
101 //First time
102 fileField.setEditable(false);
103 formatField.setEditable(false);
107 int numTuples=0;
109 try{
110 numTuples = Integer.parseInt(numberField.getText());
111 }catch(Exception e){
112 new Dialog(generatorFrame,"Input not well formed");
115 for (int i=0; i<numTuples; i++){
116 for (int j=0; j<formats.length; j++){
117 out.print(random.nextInt(formats[j]));
118 if (j==formats.length-1)
119 out.println("");
120 else
121 out.print("\t");
125 out.flush();
130 * Create the GUI and show it. For thread safety,
131 * this method should be invoked from the
132 * event-dispatching thread.
134 private static void createAndShowGUI() {
135 //Make sure we have nice window decorations.
136 JFrame.setDefaultLookAndFeelDecorated(true);
138 StreamGenerator converter = new StreamGenerator();
141 public static void main(String[] args) {
142 //Schedule a job for the event-dispatching thread:
143 //creating and showing this application's GUI.
144 javax.swing.SwingUtilities.invokeLater(new Runnable() {
145 public void run() {
146 createAndShowGUI();