1 /*
2  * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  *   - Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer.
10  *
11  *   - Redistributions in binary form must reproduce the above copyright
12  *     notice, this list of conditions and the following disclaimer in the
13  *     documentation and/or other materials provided with the distribution.
14  *
15  *   - Neither the name of Oracle nor the names of its
16  *     contributors may be used to endorse or promote products derived
17  *     from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 /*
33  * This source code is provided to illustrate the usage of a given feature
34  * or technique and has been deliberately simplified. Additional steps
35  * required for a production-quality application, such as security checks,
36  * input validation and proper error handling, might not be present in
37  * this sample code.
38  */
39 
40 
41 
42 /**
43  * A generic sort demonstration algorithm
44  * SortAlgorithm.java, Thu Oct 27 10:32:35 1994
45  *
46  * @author James Gosling
47  */
48 class SortAlgorithm {
49 
50     /**
51      * The sort item.
52      */
53     private SortItem parent;
54     /**
55      * When true stop sorting.
56      */
57     protected boolean stopRequested = false;
58 
59     /**
60      * Set the parent.
61      */
setParent(SortItem p)62     public void setParent(SortItem p) {
63         parent = p;
64     }
65 
66     /**
67      * Pause for a while.
68      */
pause()69     protected void pause() throws Exception {
70         if (stopRequested) {
71             throw new Exception("Sort Algorithm");
72         }
73         parent.pause(parent.h1, parent.h2);
74     }
75 
76     /**
77      * Pause for a while and mark item 1.
78      */
pause(int H1)79     protected void pause(int H1) throws Exception {
80         if (stopRequested) {
81             throw new Exception("Sort Algorithm");
82         }
83         parent.pause(H1, parent.h2);
84     }
85 
86     /**
87      * Pause for a while and mark item 1 & 2.
88      */
pause(int H1, int H2)89     protected void pause(int H1, int H2) throws Exception {
90         if (stopRequested) {
91             throw new Exception("Sort Algorithm");
92         }
93         parent.pause(H1, H2);
94     }
95 
96     /**
97      * Stop sorting.
98      */
stop()99     public void stop() {
100         stopRequested = true;
101     }
102 
103     /**
104      * Initialize
105      */
init()106     public void init() {
107         stopRequested = false;
108     }
109 
110     /**
111      * This method will be called to
112      * sort an array of integers.
113      */
sort(int a[])114     void sort(int a[]) throws Exception {
115     }
116 }
117