blob: d998a6114aeba1e5cf4f563131b5a4ed84abae5c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.pig.tools.streams;
/**
* StreamGenerator.java is a 1.4 application that
* demonstrates the use of JButton, JTextField and
* JLabel. It requires no other files.
*/
import java.awt.*;
import java.awt.event.*;
import java.io.PrintWriter;
import java.util.Random;
import javax.swing.*;
public class StreamGenerator implements ActionListener {
JFrame generatorFrame;
JPanel generatorPanel;
JTextField fileField, formatField, numberField;
JLabel fileLabel, formatLabel, numberLabel;
JButton generateButton;
PrintWriter out = null;
int[] formats;
Random random = new Random();
public StreamGenerator() {
//Create and set up the window.
generatorFrame = new JFrame("Stream Generator");
generatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
generatorFrame.setSize(new Dimension(120, 40));
//Create and set up the panel.
generatorPanel = new JPanel(new GridLayout(4, 4));
//Add the widgets.
addWidgets();
//Set the default button.
generatorFrame.getRootPane().setDefaultButton(generateButton);
//Add the panel to the window.
generatorFrame.getContentPane().add(generatorPanel, BorderLayout.CENTER);
//Display the window.
generatorFrame.pack();
generatorFrame.setVisible(true);
}
/**
* Create and add the widgets.
*/
private void addWidgets() {
//Create widgets.
fileField = new JTextField(10);
formatField = new JTextField(10);
numberField = new JTextField(5);
fileLabel = new JLabel("File", SwingConstants.LEFT);
generateButton = new JButton("Generate");
formatLabel = new JLabel("Format", SwingConstants.LEFT);
numberLabel = new JLabel("Number of tuples", SwingConstants.LEFT);
//Listen to events from the Convert button.
generateButton.addActionListener(this);
//Add the widgets to the container.
generatorPanel.add(fileLabel);
generatorPanel.add(fileField);
generatorPanel.add(formatLabel);
generatorPanel.add(formatField);
generatorPanel.add(numberLabel);
generatorPanel.add(numberField);
generatorPanel.add(generateButton);
fileLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
formatLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
}
public void actionPerformed(ActionEvent event) {
if (out == null){
try{
String fileName = fileField.getText();
String format = formatField.getText();
out = new PrintWriter(fileName);
String[] formats = format.split(",");
this.formats = new int[formats.length];
for (int i=0; i<formats.length; i++){
this.formats[i] = (int)Math.pow(10,Integer.parseInt(formats[i]));
}
}catch(Exception e){
new Dialog(generatorFrame,"Input not well formed");
}
//First time
fileField.setEditable(false);
formatField.setEditable(false);
}
int numTuples=0;
try{
numTuples = Integer.parseInt(numberField.getText());
}catch(Exception e){
new Dialog(generatorFrame,"Input not well formed");
}
for (int i=0; i<numTuples; i++){
for (int j=0; j<formats.length; j++){
out.print(random.nextInt(formats[j]));
if (j==formats.length-1)
out.println("");
else
out.print("\t");
}
}
out.flush();
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}