1 of 7 1 i mpor t j avax. swi ng. *; 2 i mpor t j ava. awt . *; 3 i mpor t j ava. awt . event . *; 4 i mpor t j avax. swi ng. t abl e. *; 5 i mpor t j ava. ut i l . *; 6 7 publ i c cl ass PPSchedul i ng ext ends J Fr ame { 8 9 st at i c i nt l engt h = 0; 10 st at i c i nt [ ] t empbur st t i me = new i nt [ 100] ; 11 st at i c i nt [ ] pr ocessName = new i nt [ 100] ; 12 st at i c i nt [ ] ar r i val Ti me = new i nt [ 100] ; 13 st at i c i nt [ ] bur st Ti me = new i nt [ 100] ; 14 st at i c i nt [ ] pr i or i t y = new i nt [ 100] ; 15 st at i c bool ean[ ] f i ni shed = new bool ean[ 100] ; 16 17 st at i c i nt [ ] t t i me = new i nt [ 100] ; 18 st at i c i nt [ ] t ask = new i nt [ 1000000] ; 19 20 st at i c i nt f i ni sh = 0; 21 st at i c i nt t i me = 0; 22 st at i c i nt t ot al Ti me = 0; 23 24 J Tool Bar t ool bar = new J Tool Bar ( ) ; 25 J But t on comput eBut t on = new J But t on( " Comput e" ) ; 26 J Label t i t l eLabel = new J Label ( " Pr e- empt i ve Pr i or i t y Schedul i ng Al gor i t hm" ) ; 27 J Panel t ool Panel = new J Panel ( ) ; 28 J TabbedPane bodyTabbedpane = new J TabbedPane( ) ; 29 30 st at i c J Text Ar ea t askAr ea = new J Text Ar ea( ) ; 31 st at i c J Text Ar ea gant t Ar ea = new J Text Ar ea( ) ; 32 33 st at i c Def aul t Tabl eModel model Dat a = new Def aul t Tabl eModel ( ) ; 34 st at i c Def aul t Tabl eModel model Cal c = new Def aul t Tabl eModel ( ) ; 35 st at i c Def aul t Tabl eModel model Cal cResul t = new Def aul t Tabl eModel ( ) ; 36 37 J Tabl e dat aTabl e = new J Tabl e( model Dat a) ; 38 J Tabl e cal cTabl e = new J Tabl e( model Cal c) ; 39 J Tabl e cal cResul t Tabl e = new J Tabl e( model Cal cResul t ) ; 40 41 J Scr ol l Pane dat aScr ol l = new J Scr ol l Pane( dat aTabl e) ; 42 J Scr ol l Pane cal cScr ol l = new J Scr ol l Pane( cal cTabl e) ; 43 J Scr ol l Pane cal cResul t Scr ol l = new J Scr ol l Pane( cal cResul t Tabl e) ; 44 J Scr ol l Pane t askResul t Scr ol l = new J Scr ol l Pane( t askAr ea) ; 45 J Scr ol l Pane gant t Ar eaScr ol l = new J Scr ol l Pane( gant t Ar ea) ; 46 47 J Spl i t Pane cal cSpl i t Pane = new J Spl i t Pane( J Spl i t Pane. HORI ZONTAL_SPLI T, 48 cal cResul t Scr ol l , t askResul t Scr ol l ) ; 49 J Spl i t Pane t bt Spl i t Pane = new J Spl i t Pane( J Spl i t Pane. VERTI CAL_SPLI T, 50 cal cScr ol l , cal cSpl i t Pane) ; 51 52 53 publ i c PPSchedul i ng( ) { 54 t ool bar . set Layout ( new BoxLayout ( t ool bar , BoxLayout . X_AXI S) ) ; 55 t ool bar . add( comput eBut t on) ; 56 t ool bar . add( Box. cr eat eHor i zont al Gl ue( ) ) ; 57 t ool bar . add( t i t l eLabel ) ; 58 59 model Dat a. addCol umn( " Pr ocess" ) ; 60 model Dat a. addCol umn( " Bur st Ti me" ) ; 61 model Dat a. addCol umn( " Ar r i val Ti me" ) ; 62 model Dat a. addCol umn( " Pr i or i t y" ) ; 63 64 model Cal c. addCol umn( " Pr ocess" ) ; 65 model Cal c. addCol umn( " Tur nar ound Ti me" ) ; 66 model Cal c. addCol umn( " Wai t i ng Ti me" ) ; 67 68 model Cal cResul t . addCol umn( " Ti me" ) ; 69 model Cal cResul t . addCol umn( " Task" ) ; 70 model Cal cResul t . addCol umn( " Pr i or i t y" ) ; 71 72 cal cSpl i t Pane. set Resi zeWei ght ( 0. 5) ; 73 t bt Spl i t Pane. set Resi zeWei ght ( 0. 5) ; 74 75 bodyTabbedpane. addTab( " Ent er ed Dat a/ Pr ocess" , dat aScr ol l ) ; 76 bodyTabbedpane. addTab( " Temp/ Bur st / Ti me Cal cul at i on" , t bt Spl i t Pane) ; 77 bodyTabbedpane. addTab( " Gannt Char t " , gant t Ar eaScr ol l ) ; PPSchedul i ng. j ava 13/ Dec/ 2010 2 of 7 78 79 t hi s. add( t ool bar , Bor der Layout . NORTH) ; 80 t hi s. add( bodyTabbedpane, Bor der Layout . CENTER) ; 81 82 comput eBut t on. addAct i onLi st ener ( new Act i onLi st ener ( ) { 83 publ i c voi d act i onPer f or med( Act i onEvent ae) { 84 t r y { 85 86 87 88 whi l e ( model Dat a. get RowCount ( ) >0) { 89 model Dat a. r emoveRow( 0) ; 90 } 91 92 whi l e ( model Cal c. get RowCount ( ) >0) { 93 model Cal c. r emoveRow( 0) ; 94 } 95 96 whi l e ( model Cal cResul t . get RowCount ( ) >0) { 97 model Cal cResul t . r emoveRow( 0) ; 98 } 99 100 t askAr ea. set Text ( " " ) ; 101 gant t Ar ea. set Text ( " " ) ; 102 103 get I nput Dat a( ) ; 104 out put I nput Dat a( ) ; 105 106 bubbl e( ) ; 107 copyBur st Ti me( ) ; 108 pr ocessI nput Dat a( ) ; 109 out put pr ocess( ) ; 110 comput eAver age( ) ; 111 gener at eTaskPr ocess( ) ; 112 di spl ayTabl e( ) ; 113 114 } cat ch( Except i on e) { 115 r et ur n; 116 } 117 } 118 }) ; 119 120 } 121 122 123 124 publ i c st at i c voi d mai n( St r i ng ar gs[ ] ) { 125 t r y { 126 UI Manager . set LookAndFeel ( UI Manager . get Syst emLookAndFeel Cl assName( ) ) ; 127 } cat ch ( Except i on e) { } 128 129 PPSchedul i ng pps = new PPSchedul i ng( ) ; 130 131 i nt wi dt h = 500; 132 i nt hei ght = 450; 133 Di mensi on scr een = Tool ki t . get Def aul t Tool ki t ( ) . get Scr eenSi ze( ) ; 134 i nt x = ( scr een. wi dt h- wi dt h) / 2; 135 i nt y = ( scr een. hei ght - hei ght ) / 2; 136 137 pps. set Bounds( x, y, wi dt h, hei ght ) ; 138 pps. set Ti t l e( " Pr e- empt i ve Pr i or i t y Schedul i ng Al gor i t hm" ) ; 139 pps. set Def aul t Cl oseOper at i on( EXI T_ON_CLOSE ) ; 140 pps. set Vi si bl e( t r ue) ; 141 142 143 } 144 145 publ i c st at i c voi d get I nput Dat a( ) { 146 147 St r i ng par seVal ue = " " ; 148 par seVal ue = J Opt i onPane. showI nput Di al og( nul l , " Ent er Number of Pr ocess( es) ?" 149 150 i f ( par seVal ue. equal sI gnor eCase( " " ) ) { 151 J Opt i onPane. showMessageDi al og( nul l , " Pl ease ent er a val i d i nput ! " ) ; 152 } el se { 153 l engt h = I nt eger . par seI nt ( par seVal ue) ; 154 } PPSchedul i ng. j ava 13/ Dec/ 2010 3 of 7 155 156 157 158 f or ( i nt x=0; x<l engt h; x++) { 159 pr ocessName[ x] = x; 160 161 St r i ng par sePr ocess, par seAr i al Ti me, par sePr i or i t y; 162 163 par sePr ocess = J Opt i onPane. showI nput Di al og( nul l , " Bur st Ti me f or Pr ocess + ( x + 1) ) ; 164 165 i f ( par sePr ocess. equal sI gnor eCase( " " ) ) { 166 J Opt i onPane. showMessageDi al og( nul l , " Pl ease ent er a val i d i nput ! " ) ; 167 r et ur n; 168 } el se { 169 bur st Ti me[ x] = I nt eger . par seI nt ( par sePr ocess) ; 170 } 171 172 par seAr i al Ti me = J Opt i onPane. showI nput Di al og( nul l , " Ar r i val Ti me f or Pr oc " + ( x + 1) ) ; 173 174 i f ( par seAr i al Ti me. equal sI gnor eCase( " " ) ) { 175 J Opt i onPane. showMessageDi al og( nul l , " Pl ease ent er a val i d i nput ! " ) ; 176 r et ur n; 177 } el se { 178 ar r i val Ti me[ x] = I nt eger . par seI nt ( par seAr i al Ti me) ; 179 } 180 181 par sePr i or i t y = J Opt i onPane. showI nput Di al og( nul l , " Pr i or i t y f or Pr ocess " + ( x + 1) ) ; 182 183 i f ( par sePr i or i t y. equal sI gnor eCase( " " ) ) { 184 J Opt i onPane. showMessageDi al og( nul l , " Pl ease ent er a val i d i nput ! " ) ; 185 r et ur n; 186 } el se { 187 pr i or i t y[ x] = I nt eger . par seI nt ( par sePr i or i t y) ; 188 } 189 190 f i ni shed[ x] = f al se; 191 } 192 193 194 195 } 196 197 publ i c st at i c voi d gener at eTaskPr ocess( ) { 198 i nt i ; 199 i nt cur r ent Pr i or i t y; 200 i nt cur r ent Pr ocess; 201 bool ean sel ect ed=f al se; 202 203 t ot al Ti me=0; 204 t i me=1; 205 206 207 f or ( i =0; i <=l engt h- 1; i ++) { 208 t ot al Ti me=t ot al Ti me+bur st Ti me[ i ] ; 209 } 210 211 t ot al Ti me++; 212 213 214 cur r ent Pr ocess=0; 215 cur r ent Pr i or i t y=pr i or i t y[ 0] ; 216 217 i nt cnt = 0; 218 whi l e ( t i me<t ot al Ti me) { 219 sel ect ed=f al se; 220 221 222 f or ( i =0; i <=l engt h- 1; i ++) { 223 224 i f ( ( t i me==ar r i val Ti me[ i ] ) && ( f i ni shed[ i ] ==f al se) ) { 225 i f ( cur r ent Pr i or i t y>pr i or i t y[ i ] ) { 226 cur r ent Pr i or i t y=pr i or i t y[ i ] ; 227 cur r ent Pr ocess=i ; 228 sel ect ed=t r ue; PPSchedul i ng. j ava 13/ Dec/ 2010 4 of 7 229 } el se { 230 231 i f ( ( cur r ent Pr i or i t y==pr i or i t y[ i ] ) &&( bur st Ti me[ i ] <bur st Ti me[ cur r ent Pr ocess] ) ) { 232 cur r ent Pr ocess=i ; 233 cur r ent Pr i or i t y=pr i or i t y[ i ] ; 234 sel ect ed=t r ue; 235 } 236 } 237 } el se { 238 239 i f ( ( t i me>ar r i val Ti me[ i ] ) &&( cur r ent Pr i or i t y>pr i or i t y[ i ] ) &&( f i ni shed[ i ] ==f al se) ) { 240 cur r ent Pr i or i t y=pr i or i t y[ i ] ; 241 cur r ent Pr ocess=i ; 242 sel ect ed=t r ue; 243 } 244 } 245 246 i f ( sel ect ed==t r ue) { 247 br eak; 248 } 249 } 250 251 t ask[ t i me] =pr ocessName[ cur r ent Pr ocess] ; 252 bur st Ti me[ cur r ent Pr ocess] =bur st Ti me[ cur r ent Pr ocess] - 1; 253 254 255 256 Obj ect [ ] r owDat a3 = {t i me, t ask[ t i me] , cur r ent Pr i or i t y}; 257 model Cal cResul t . i nser t Row( cnt , r owDat a3) ; 258 cnt ++; 259 t i me++; 260 261 262 i f ( bur st Ti me[ cur r ent Pr ocess] ==0) { 263 f i ni shed[ cur r ent Pr ocess] =t r ue; 264 f or ( i =0; i <=l engt h- 1; i ++) { 265 i f ( f i ni shed[ i ] ==f al se) 266 { 267 cur r ent Pr ocess=i ; 268 cur r ent Pr i or i t y=pr i or i t y[ cur r ent Pr ocess] ; 269 br eak; 270 } 271 } 272 } 273 274 } 275 } 276 277 publ i c st at i c voi d di spl ayTabl e( ) { 278 i nt l i neCount =0; 279 i nt i =1, t empi =1; 280 281 282 whi l e ( i <t ot al Ti me) { 283 284 gant t Ar ea. append( " Ti me : " ) ; 285 f or ( l i neCount =0; l i neCount <=10; l i neCount ++) 286 { 287 i f ( t empi <10) 288 gant t Ar ea. append( " | - 0" +t empi +" - | " ) ; 289 el se 290 gant t Ar ea. append( " | - " +t empi +" - | " ) ; 291 t empi ++; 292 } 293 294 gant t Ar ea. append( " \ nPr ocess : " ) ; 295 f or ( l i neCount =0; l i neCount <=10; l i neCount ++) 296 { 297 i f ( t ask[ i ] <10) 298 gant t Ar ea. append( " | P0" +t ask[ i ] +" - | " ) ; 299 el se 300 gant t Ar ea. append( " | P" +t ask[ i ] +" - | " ) ; 301 302 i ++; 303 PPSchedul i ng. j ava 13/ Dec/ 2010 5 of 7 304 i f ( i ==t ot al Ti me) 305 br eak; 306 } 307 gant t Ar ea. append( " \ n\ n" ) ; 308 } 309 } 310 311 publ i c st at i c voi d out put I nput Dat a( ) { 312 f or ( i nt x=0; x<l engt h; x++) { 313 314 Obj ect [ ] r owDat a = {pr ocessName[ x] + 1, bur st Ti me[ x] , ar r i val Ti me[ x] , pr i or i t y[ x] }; 315 model Dat a. i nser t Row( x, r owDat a) ; 316 317 318 } 319 } 320 321 publ i c st at i c voi d copyBur st Ti me( ) { 322 f or ( i nt x=0; x<l engt h; x++) { 323 t empbur st t i me[ x] =bur st Ti me[ x] ; 324 } 325 } 326 327 st at i c voi d pr ocessI nput Dat a( ) { 328 i nt s=0; 329 330 whi l e( f i ni sh! =l engt h) { 331 do { 332 333 f or ( i nt x=0; x<l engt h; x++) { 334 335 s=0; 336 i f ( ( ar r i val Ti me[ x] <=t i me) &&( t empbur st t i me[ x] ! =0) ) { 337 t i me=t i me+1; 338 t empbur st t i me[ x] =t empbur st t i me[ x] - 1; 339 t t i me[ x] =t i me; 340 341 i f ( t empbur st t i me[ x] ==0) { 342 f i ni sh=f i ni sh+1; 343 } 344 345 s = 1; 346 347 } 348 349 i f ( s==1) { 350 whi l e ( x! =l engt h) { 351 x++; 352 } 353 } 354 } 355 356 } whi l e( s==1) ; 357 t i me=t i me+1; 358 } 359 } 360 361 publ i c st at i c voi d t cout i nput ( ) { 362 Syst em. out . pr i nt ( " - - PROCESS| - - BURSTTI ME| - - ARRI VAL TI ME| - - PRI ORI TY| \ n" ) ; 363 f or ( i nt x=0; x<l engt h; x++) { 364 Syst em. out . pr i nt ( " " +pr ocessName[ x] +" | " +" " +bur st Ti me[ x] +" | " ) 365 Syst em. out . pr i nt ( " " +ar r i val Ti me[ x] +" | " ) ; 366 Syst em. out . pr i nt ( " " +pr i or i t y[ x] +" | " ) ; 367 Syst em. out . pr i nt ( " \ n" ) ; 368 369 } 370 371 } 372 373 publ i c st at i c voi d out put pr ocess( ) { 374 f or ( i nt x=0; x<l engt h; x++) { 375 Obj ect [ ] r owDat a2 = {pr ocessName[ x] + 1, ( t t i me[ x] - ar r i val Ti me[ x] ) , ( t t i me[ x] - ar r i val Ti me[ x] - bur st Ti me[ x] ) }; 376 model Cal c. i nser t Row( x, r owDat a2) ; 377 378 } PPSchedul i ng. j ava 13/ Dec/ 2010 6 of 7 379 } 380 381 publ i c st at i c voi d bubbl e( ) { 382 i nt i , j ; 383 f or ( i =0; i <l engt h; i ++) { 384 f or ( j =0; j <( l engt h- 1- i ) ; j ++) 385 { 386 i f ( pr i or i t y[ j +1] <pr i or i t y[ j ] ) { 387 swap( j +1, j ) ; 388 } 389 } 390 } 391 } 392 393 publ i c st at i c voi d swap( i nt x, i nt y) { 394 i nt t emp, t emp2; 395 i nt [ ] t emp3 = new i nt [ 100] ; 396 i nt t emp4; 397 398 t emp=bur st Ti me[ x] ; 399 t emp2=pr i or i t y[ x] ; 400 t emp3[ x] =pr ocessName[ x] ; 401 t emp4=ar r i val Ti me[ x] ; 402 403 / / t r ansf er 404 bur st Ti me[ x] =bur st Ti me[ y] ; 405 pr i or i t y[ x] =pr i or i t y[ y] ; 406 pr ocessName[ x] =pr ocessName[ y] ; 407 ar r i val Ti me[ x] =ar r i val Ti me[ y] ; 408 409 / / get f r omt emp 410 bur st Ti me[ y] =t emp; 411 pr i or i t y[ y] =t emp2; 412 pr ocessName[ y] =t emp3[ x] ; 413 ar r i val Ti me[ y] =t emp4; 414 } 415 416 publ i c st at i c voi d comput eAver age( ) { 417 i nt t ot al t t =0, t ot al wt =0; 418 i nt x, t i me=0; 419 420 f or ( x=0; x<l engt h; x++) { 421 t ot al t t =t ot al t t +t t i me[ x] - ar r i val Ti me[ x] ; 422 t ot al wt =t ot al wt +t t i me[ x] - ar r i val Ti me[ x] - bur st Ti me[ x] ; 423 } 424 425 t askAr ea. append( " Aver age Tur n Ar ound Ti me - [ " ) ; 426 f or ( x=0; x<l engt h; x++) { 427 i f ( x! =l engt h- 1) { 428 t askAr ea. append( " " + ( t t i me[ x] - ar r i val Ti me[ x] ) + " +" ) ; 429 430 } el se { 431 t askAr ea. append( " " + ( t t i me[ x] - ar r i val Ti me[ x] ) ) ; 432 433 } 434 } 435 436 t askAr ea. append( " ] / " +l engt h) ; 437 t askAr ea. append( " = " +t ot al t t / ( f l oat ) l engt h+" " ) ; 438 t askAr ea. append( " \ n" ) ; 439 t askAr ea. append( " Aver age Wai t i ng Ti me - " ) ; 440 t askAr ea. append( " [ " ) ; 441 442 443 444 f or ( x=0; x<l engt h; x++) { 445 446 i f ( x! =l engt h- 1) 447 t askAr ea. append( " " + ( t t i me[ x] - ar r i val Ti me[ x] - bur st Ti me[ x] + " +" ) ) ; 448 el se 449 t askAr ea. append( " " + ( t t i me[ x] - ar r i val Ti me[ x] - bur st Ti me[ x] ) ) ; 450 } 451 452 453 t askAr ea. append( " ] / " +l engt h) ; 454 t askAr ea. append( " = " +( t ot al wt / ( f l oat ) l engt h) +" \ n" ) ; 455 } PPSchedul i ng. j ava 13/ Dec/ 2010 7 of 7 456 457 }