Progress Bar in MultiThreaded Application

Hi,
Can anybody tell me how can set a progress bar for a multi threaded application.
See for eg ..I have a multi threaded application which copies 100 files and there are 5 threads, so I assign 20 files to copy for each thread.
how can set the overall progress of copy?
Can somebody help me in this regard.
Thank you so much in advance.

muthu_veerappan wrote:
Hi,
Can anybody tell me how can set a progress bar for a multi threaded application.
See for eg ..I have a multi threaded application which copies 100 files and there are 5 threads, so I assign 20 files to copy for each thread.
how can set the overall progress of copy?The same way you would with a single thread. Keep track of the progress (bytes copied or number of files) and update the progress bar. The java.util.concurrent.Executors class can make this easier in a multi-threaded environment.
Jim S.

Similar Messages

  • Need to use progress bar in my application

    hello friends,
    Actually i m using jsp filedownload and I am gettting my file in byte array and need to implement a progress bar while downloading file (as IE showing in status bar downloading file size ..% of total file size)...no fake progress bars and no stop gap solutions as like a gif moving with sign "plz wait ..file is downloading "
    plz help how to get this done
    My code
    HashMap result = (HashMap)request.getAttribute("requestParams");
         String type = request.getParameter("type");
         boolean isFile = false;
              if(result != null){
              String successFlag = (String) result.get("");
              String sFileName = null;
              byte[] bFile = null;
              String sContentType = null;
              if(successFlag != null && successFlag.equals("true")){
                   for(int i=0;i<result.size();i++){
                        sFileName = (String) result.get("FILENAME");
                        bFile = (byte[]) result.get("FILEDATA");
                        sContentType = (String) result.get("CONTENTTYPE");
                   response.reset();
                   if(null!=bFile) {
                        if(bFile.length>0){
                             if(sContentType == null || sContentType.equals("")){
                                  response.setContentType( "application/octet-stream" );
                             else response.setContentType(sContentType);
                             response.setHeader("Accept-Ranges", "bytes");
                             isFile = true;
                             response.setHeader("Content-Length", Integer.toString(bFile.length, 10));
                             if(null!=sFileName){
                                  if("view".equals(type)){
                                       if(null!=sFileName)response.setHeader("Content-Disposition","inline; filename=\""+sFileName+"\"");
                                  else{
                                       response.setHeader("Content-Disposition","attachment; filename=\""+sFileName+"\"");
                             ServletOutputStream outs = response.getOutputStream();
                             if(null!=bFile)outs.write(bFile);
                             outs.flush();
                             outs.close();
                             out.clear();
                             out = pageContext.pushBody();
                                       }

    You should get your keyboard fixed. There's a lot of letters missing from what you type and it makes it very hard for other people to read. It looks extremely inelegant.
    Anyway, your JSP isn't in control of the download. (You shouldn't have all that Java code in a JSP either but that's a separate issue.) All it does is to send the data to the browser, which is in charge of the download. And in all the browsers I use, there's a box which tells you how far the download has proceeded. No real need for a progress bar, even if you could persuade the browser to make one. Which you can't.

  • No progress bar when an application installs?

    After signing up I started downloading photoshop. It is more than 2 hours and it was still not completed... There was no progress bar either on the application manager. Any help here? Thank you

    Try the direct download.
    Assuming that you mean Photoshop CC: http://prodesigntools.com/adobe-cc-2014-direct-download-links.html
    Photoshop Elements: http://prodesigntools.com/photoshop-elements-13-direct-download-links-premiere.html
    Make sure you follow the Very Important Instructions on these pages.

  • Progress Bar in Java

    Hi,
    I'm new here, i need to create a Progress Bar for my application,
    but i just don't get how to get back how much that a process has proceed,
    can anyone help me? i have stuck at here for a few days
    example; i do a System.out.Println("blablabla")
    how to see it's done or how many percent have been done?
    or anyone can give me a good example of Java Progress Bar?
    Any help will be very appriciated.

    By using this method
    public boolean saveAs(Shell shell) {
              FileDialog saveDialog = new FileDialog(shell, SWT.SAVE);
              saveDialog.setFilterExtensions(new String[] { "*.xsd;", "*.*" });
              saveDialog.setFilterNames(new String[] {
                        "XML Schema Definition (*.xsd)", "All Files " });
              saveDialog.open();
              String name = saveDialog.getFileName();
              if (name.equals(""))
                   return false;
              if (name.indexOf(".xsd") != name.length() - 4) {
                   name += ".xsd";
              File file = new File(saveDialog.getFilterPath(), name);
              if (file.exists()) {
                   MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.YES
                             | SWT.NO);
                   box.setText("Save As");
                   box.setMessage("File " + file.getName() + " is already exits "
                             + "\n" + "Do you want to replace it?");
                   if (box.open() != SWT.YES) {
                        return false;
              this.file = file;
              this.saveToPath = saveDialog.getFilterPath();
              return save(shell);
         public boolean save(Shell shell) {
              if (file == null)
                   return saveAs(shell);
              Cursor waitCursor = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
              shell.setCursor(waitCursor);
              FileWriter fileWriter = null;
              try {
                   fileWriter = new FileWriter(file.getAbsolutePath(), false);
                   fileWriter.write(text.getText());
              } catch (FileNotFoundException e) {
                   displayError("File_not_found " + file.getName(), shell);
                   return false;
              } catch (IOException e) {
                   displayError("IO_error_write" + "\n" + file.getName(), shell);
                   return false;
              } finally {
                   shell.setCursor(null);
                   waitCursor.dispose();
                   if (fileWriter != null) {
                        try {
                             fileWriter.close();
                        } catch (IOException e) {
                             displayError("IO_error_close" + "\n" + file.getName(),
                                       shell);
                             return false;
              return true;
         }

  • JavaFX progress bar with glow effect.

    I am hoping someone can help me with this issue. I recently followed James Clarke example of a progress bar with glow effect and it helped with developing a progress bar for an application I was working on. But now, with the JavaFX sdk 1.2 update, the application does not fully work anymore. The progressbar.fx code is posted below:
    ProgressBar.fx code:
    import java.lang.Math;
    import java.lang.Object;
    import javafx.animation.Interpolator;
    import javafx.animation.Timeline;
    import javafx.scene.CustomNode;
    import javafx.scene.effect.GaussianBlur;
    import javafx.scene.Group;
    import javafx.scene.Node;
    import javafx.scene.paint.Color;
    import javafx.scene.paint.Paint;
    import javafx.scene.Scene;
    import javafx.scene.shape.Ellipse;
    import javafx.scene.shape.Rectangle;
    import javafx.scene.text.Font;
    import javafx.scene.text.Text;
    import javafx.scene.text.TextOrigin;
    import javafx.stage.Stage;
    import javafx.scene.layout.Resizable;
    public class ProgressBar extends CustomNode, Resizable{
    public var min: Number;
    public var max: Number = 100.0;
    public var value: Number;
    public var background: Paint = Color.rgb(118,149,178);
    public var foreground: Paint = Color.rgb(216,219,225);
    public var font = bind Font{name: "Courier Bold Italic" size: height - borderWidth * 8};
    public var arcWidth: Number = 20;
    public var arcHeight: Number = 50;
    public var borderStroke: Color = Color.BLACK;
    public var borderWidth: Number = 1;
    public var fontPaint: Paint = Color.LIGHTGRAY;
    public var showPercentage = true;
    var progressText: Text;
    var backgroundText: Text;
    var progessBar: Rectangle;
    var range = bind Math.abs(max - min);
    var percentComplete: Number = bind if(max != 0) { (
    value - min) / max
    } // if
    else {0.0;} // else;
    var currentX = bind percentComplete * width;
    var blurX: Number = 30;
    var progressString: String = bind "%%{%.0f (percentComplete*100)}";
    var progressValue = bind "{%.2f value}";
    var progressHeight = bind height - borderWidth * 4;
    var blurAnim = Timeline {
    repeatCount: Timeline.INDEFINITE
    autoReverse: true
    keyFrames: [
    at(0s) { blurX => 0.0 }
    at(2s) { blurX =>
    currentX - progressHeight / 2 tween Interpolator.EASEBOTH }
    var playing = bind visible on replace{
    if(playing) {
    blurAnim.play();
    }else {
    blurAnim.stop();
    public override function create(): Node {
    return Group {
    content: [
    Rectangle { //background
    width: bind width
    height: bind height
    fill: bind background
    stroke: bind borderStroke
    strokeWidth: bind borderWidth
    arcWidth: bind arcWidth
    arcHeight: bind arcHeight
    cache: true
    backgroundText = Text { // Text over Background
    layoutX: bind (width - backgroundText.layoutBounds.width) / 2
    layoutY: bind (height - backgroundText.layoutBounds.height) / 2
    textOrigin: TextOrigin.TOP
    font: bind font
    fill: bind foreground
    content: bind if(showPercentage) progressString else progressValue
    cache: true
    Group {
    content: [
    progessBar = Rectangle { // Progress
    layoutX: bind borderWidth
    layoutY: bind borderWidth * 2
    width: bind currentX
    height: bind progressHeight
    fill: bind foreground
    arcWidth: bind arcWidth
    arcHeight: bind arcHeight
    Ellipse {
    centerX: bind blurX
    centerY: bind height / 2
    radiusX: bind progressHeight
    radiusY: bind progressHeight / 2
    fill: Color.rgb(255,255,255,.7)
    effect: GaussianBlur{ radius: 30
    Text { // Text Over Progress Bar, this has to be in progressBar coordinate space
    x: bind (width - backgroundText.layoutBounds.width) / 2
    y: bind (height - backgroundText.layoutBounds.height) / 2
    textOrigin: TextOrigin.TOP
    font: bind font
    fill: bind background
    content: bind if(showPercentage) progressString else progressValue
    clip: bind progessBar
    }, // Text
    ] // 2nd content
    } // 2nd Group
    ] // 1st content
    }; // 1st Group
    } // public override function create(): Node
    } // public abstract class ProgressBar extends CustomNode, Resizeable
    function run(args:String[]):Void {
    var stage: Stage = Stage {
         title: "Progress Bar"
    scene: Scene {
    width: 925
    height: 60
    content: ProgressBar {
         layoutX: 10
    layoutY: 10
    width: 890
    height: 35
    value: 80
    } // content: ProgressBar
    } // scene: Scene
    } // var stage: Stage = Stage
    } // function run(args:String[]):Void
    I use RESTful ws to get the progress of the billing run, which is the loadProgressdata() method in the main.fx, and everything was working fine until we did the javafx sdk 1.2 update. With the update in place, I recompiled the project and found that "Resizable" in
    the "public class ProgressBar extends CustomNode, Resizable" was throwing an error when the project was recompiled. I made some changes(mainly adding variables for height and width) but now when the program runs, the backing rectangle appears along with the
    percentage of billing progress, but the progress part(2nd rectangle) does not appear with the glow effect. I have read about using "getPrefWidth()" and "getPrefHeight()" methods, but not really sure how I would use them. I can't make the public class ProgressBar extends CustomNode, Resizable abstract as I need to instantiate in the Main.fx.
    Can anyone shed some light on what might need to be done to get this running correctly again. I don't need anyone the give me the exact code, but just to point me in the correct direction.

    Can you post your code again between "{ code} ... {code }" tags ? Some symbols are missing if copy/pasted.
    That said, your preferred width and height, simply return the width and height of your component. What I discovered recently is using LayoutInfo on controls to set the preferred width and height. These are the dimensions the surrounding container (VBox, HBox, Flow, ....) will use to arrange size and position of the enclosed components. So maybe you won't need Resizable any more. Simply fill in the layoutInfo property.
    Edited by: Java.Artisan on Jun 26, 2009 11:25 AM
    Edited by: Java.Artisan on Jun 26, 2009 11:26 AM

  • Progress bar problem in IE with on demand application call

    I have several on demand application processes that I call from javascript. The application processes in turn call pl/sql procedures. Some of the procedures take up to 10 seconds to complete and while they are running, the screen just appears to freeze so the user does not know that they are actually running. I would therefore like to add some kind of a progress bar or hourglass or some indication that things are happening.
    So I found the instructions in Re: Display of Hourglass When Page is processing . This works great in Firefox, but not in IE.
    My Footer text:
    <style> #AjaxLoading{padding:5px;font-size:18px;width:200px;text-align:center;left:50%;top:20%;position:absolute;border:2px solid #666;background-color:#FFF;}
    </style>
    <div id="AjaxLoading" style="display:none;">..Processing..
    <img src="#IMAGE_PREFIX#processing3.gif" id="wait" />
    </div>
    My javascript:
    function create_invoice(pMilestoneNumber){
    var agree=confirm("Are you sure you want to bill this Invoice?");
    var get = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=P110_CREATE_INVOICE',$v('pFlowStepId'));
    if (!agree)
         return;
    html_ShowElement('AjaxLoading');
    get.addParam('x01',pMilestoneNumber);
    gReturn = get.get();
    alert(gReturn);
    get = null;
    doSubmit();
    In Firefox, the Progress bar appears immediately after the user clicks ok to the confirm request. In IE, it does not appear until the application process returns with the return message.
    Any help would be greatly appreciated.

    Thanks for your reply. You are right, part of the code got stripped off, I guess I failed to use the code brackets before and after. Here is is again using the code brackets:
    Javascript:
    <script language="JavaScript" type="text/javascript">
    function create_invoice(pMilestoneNumber){
    var agree=confirm("Are you sure you want to bill this Milestone?");
    var get = new
    htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=P110_CREATE_INVOICE',$v('pFlowStepId'));
    if (!agree)
         return;
    html_ShowElement('AjaxLoading');
    get.addParam('x01',pMilestoneNumber);
    gReturn = get.get();
    alert(gReturn);
    get = null;
    doSubmit();
    </script>Footer:
    <style>   #AjaxLoading{padding:5px;font-size:18px;width:200px;text-align:center;left:50%;top:20%;position:absolute;border:2px solid #666;background-color:#FFF;} 
    </style> 
    <div id="AjaxLoading" style="display:none;">..Processing..<br /><img src="#IMAGE_PREFIX#processing3.gif" id="wait" />
    </div>I was using IE8, but I found an another computer with IE7 and I have the same problem there.
    My javascript code throws up a confirm message and as soon as a hit ok, Firefox brings up the progress bar and it stays up until the alert message comes back with the return from the application process. Just the way I want it. In IE, the screen just freezes after I hit ok (the same way as if you don't have a progress bar at all), but then when the alert message comes up with the return from the application process, the progress bar comes up (a little late....).
    Do you have any suggestion as to what my problem may be?

  • Show progress bar before loading the applet or application

    hi ,
    My application size is large and take some time to load . Now i want that to show progress bar . how can i do this .Please Help me
    sorry for my english.
    Thanks

    Do everything in a seperate thread. Create a progress bar in the main thread, then create a new thread for initializing your app. Once the init is done, hide the progress bar and make your app visible.

  • Progress bars objects not serializable message iat application runtime

    I am getting errors for the beans that have to do with progress bars. It says these objects are not serializable.
    When I try to implement serializable I still get that error. What do I need to do?
    I have 3 progress bars in view scope.
    SEVERE: ADFc: Scope object serialization failed (object not serializable), scope='viewScope[page.jsf]', objectKey='progressBarSampleBean',

    Hi,
    if you get this error then because you referenced a JSF component binding from a managed bean that is not in request scope. By definition, JSF components are not designed for this and instead ensure their component state is handled within a state token for high availability. The error message states you have the bean referenced in viewScope, which however you should not do. Use request scope
    Frank

  • How to use thread only for progress bar.....

    Hello,
    I am working on an application which is taking time to load. Now I want to use a progress bar to tell the user of the application that It is taking time to load. How to do it... I read the Java swing tutorial and went through the example. Please tell me what to do. Because I am unfamiliar with Threads and I am not using thread anywhere in my application.

    You are using threads. All Java execution occurs on threads. Write a Java GUI and you're in a multithreaded environment - there's no way out of that.
    If your "application is a complex one" then you would be better advised to understand threads than to try and pretend that they don't exist. For a start, if you don't think you're using threads then you're destined to run in to all sorts of problems as regards an unresponsive GUI, as you're probably now finding out.

  • How to determine a sql query size to display a progress bar

    I would like to show a progress of an sql query within a jsp page.
    Background:
    I have a reporting web application, where over 500 contacts can run reports based on different criteria such as date range....
    I current display a message stating 'executng query please wait', however the users (hate users) do not seem to wait, thereofore they decide to run the query all over again which affected my reportign sever query size (eventually this crashes, stopping all reports)
    Problem:
    The progress bar is not a problem, how would I determine the size of the query at runtime therefore adding the time onto my progress bar.

    Yes it's doable (we do it) but it sure ain't easy.
    We've got about 23,500,000 features (and counting) in a geodata database. Precise spatial selection algorithms are expensive. Really expensive.
    We cannot impose arbitrary limits on search criteria. If the client requires the whole database we are contractually obligated to provide it...
    For online searches We use statistics to approximate the number of features which a given query is likely to return... more or less the same way that the query optimiser behind any half decent (not mysql (5 alteast)) database management system does.
    We have a batch job which records how many features are linked to each distinct value of each search criteria... we just do the calculations (presuming a normal (flat) distribution) and...
    ... if the answer is more than a 100,000 we inform the user that the request must be "batched", and give them a form to fill out confirming there contact details. We run the extract overnight and send the user an email containing a link which allows them to download the result the next morning.
    ... if the answer is more than a million features we inform the user that the request must batched over the weekend... same deal as above, except we do it over the weekend to (a) discourage this; and (b) the official version ensure we have enough time to run the extract without impinging upon the maintenance window.
    ... if the answer is more than 5 million we display our brilliant "subscribe to our DVD service to get the latest version of the whole shebang every three months (or so), so you can kill your own blooody server with these ridiculous searches" form.
    Edited by: corlettk on Dec 5, 2007 11:12 AM

  • ITunes Store - Will not go beyond the dashed progress bar, will also freeze any outside Internet activity

    Alright, I've read numerous discussions and have tried to find an answer and have come up with zilch. Here's what's happening:
    I open iTunes, and it attempts to connect to the iTunes store (presumably to update the Cloud). When it does this, it remains on the dashed progress bar. While attempting to connect, it will also freeze any other Internet applications, specifically any pages open in my browser (Chrome). I'm not sure why this is, I haven't seen anything on that subject. However, if I click the (x) next to the progress bar to tell it to stop, it will do so and I can listen with ease. Now, I'd actually like to use the iTunes Store, but whenever I do, it never gets anywhere. I get the dashed progress bar, which on occassion will move on to the solid progress bar, but it will completely freeze from there. I have tried doing the winsock reset, looking for conflicting programs with LSP, reinstalling, updating, none work. After running the network connectivity diagnostics, iTunes determines that everything is good except that a secure link to the iTues store failed. This led me to believe that there was a firewall of sorts that was blocking it. After adding iTunes to the list of exceptions to Windows Firewall, the same results were thrown back at me. I do not have any other programs that would block it (that I know of).
    Please help? I just want to buy an album all legal-like.
    Windows 7 Pro, HP ProBook 4545s

    Hi there,
    So it's sounds like you've already tried a majority of the main troubleshooting steps, but I would still recommend taking a look at some of the published troubleshooting found in the articles below.
    Can't connect to the iTunes Store
    http://support.apple.com/kb/TS1368
    Note: These next articles are linked to in the article above, but I wanted to point them out specifically.
    iTunes for Windows: iTunes Store connection troubleshooting
    http://support.apple.com/kb/HT1527
    iTunes: Advanced iTunes Store troubleshooting
    http://support.apple.com/kb/TS3297
    -Griff W.

  • Pro*c multithreaded application has memory leak

    Hi there,
    I posted this message a week ago in OCI section, nobody answer me.
    I am really curious if my application has a bug or the pro*c has a bug.
    Anyone can compile the sample code and test it easily.
    I made multithreaded application which queries dynamic SQL, it works.
    But the memory leaks when i query the SQL statement.
    The more memory leaks, the more i query the SQL statement, even same SQL
    statement.
    I check it with top, shell command.
    My machine is SUN E450, Solaris 8. Oracle 9.2.0.1
    Compiler : gcc (GCC) 3.2.2
    I changed source code which is from
    $(ORACLE_HOME)/precomp/demo/proc/sample10.pc
    the sample10 doesn't need to be multithreaded. But i think it has to work
    correctly if i changed it to multithreaded application.
    the make file and source code will be placed below.
    I have to figure out the problem.
    Please help
    Thanks in advance,
    the make file is below
    HOME = /user/jkku
    ORA = $(ORACLE_HOME)
    CC = gcc
    PROC = proc
    LC_INCL = -I$(HOME)/work/dbmss/libs/include
    lc_incl = include=$(HOME)/work/dbmss/libs/include
    SYS_INCL =
    sys_incl =
    ORA_INCL = -I. \
    -I$(ORA)/precomp/public \
    -I$(ORA)/rdbms/public \
    -I$(ORA)/rdbms/demo \
    -I$(ORA)/rdbms/pbsql/public \
    -I$(ORA)/network/public \
    -DSLMXMX_ENABLE -DSLTS_ENABLE -D_SVID_GETTOD
    INCLUDES = $(LC_INCL) $(SYS_INCL) $(ORA_INCL)
    includes = $(lc_incl) $(sys_incl)
    LC_LIBS =
    SYS_LIBS = -lpthread -lsocket -lnsl -lrt
    ORA_LIBS = -L$(ORA)/lib/ -lclntsh
    LIBS = $(LC_LIBS) $(SYS_LIBS) $(ORA_LIBS)
    # Define C Compiler flags
    CFLAGS += -D_Solaris64_ -m64
    CFLAGS += -g -D_REENTRANT
    # Define pro*c Compiler flags
    PROCFLAGS += THREADS=YES
    PROCFLAGS += CPOOL=YES
    # Our object files
    PRECOMPS = sample10.c
    OBJS = sample10.o
    .SUFFIXES: .o .c .pc
    .c.o:
    $(CC) -c $(CFLAGS) $(INCLUDES) $*.c
    .pc.c:
    $(PROC) $(PROCFLAGS) $(includes) $*.pc $*.c
    all: sample10
    sample10: $(PRECOMPS) $(OBJS)
    $(CC) $(CFLAGS) -o sample10 $(OBJS) $(LIBS)
    clean:
    rm -rf *.o sample10 sample10.c
    the source code is below which i changed the oracle sample10.pc to
    multithreaded application.
    Sample Program 10: Dynamic SQL Method 4
    This program connects you to ORACLE using your username and
    password, then prompts you for a SQL statement. You can enter
    any legal SQL statement. Use regular SQL syntax, not embedded SQL.
    Your statement will be processed. If it is a query, the rows
    fetched are displayed.
    You can enter multi-line statements. The limit is 1023 characters.
    This sample program only processes up to MAX_ITEMS bind variables and
    MAX_ITEMS select-list items. MAX_ITEMS is #defined to be 40.
    #include <stdio.h>
    #include <string.h>
    #include <setjmp.h>
    #include <sqlda.h>
    #include <stdlib.h>
    #include <sqlcpr.h>
    /* Maximum number of select-list items or bind variables. */
    #define MAX_ITEMS 40
    /* Maximum lengths of the names of the
    select-list items or indicator variables. */
    #define MAX_VNAME_LEN 30
    #define MAX_INAME_LEN 30
    #ifndef NULL
    #define NULL 0
    #endif
    /* Prototypes */
    #if defined(__STDC__)
    void sql_error(void);
    int oracle_connect(void);
    int alloc_descriptors(int, int, int);
    int get_dyn_statement(void);
    void set_bind_variables(void);
    void process_select_list(void);
    void help(void);
    #else
    void sql_error(/*_ void _*/);
    int oracle_connect(/*_ void _*/);
    int alloc_descriptors(/*_ int, int, int _*/);
    int get_dyn_statement(/* void _*/);
    void set_bind_variables(/*_ void -*/);
    void process_select_list(/*_ void _*/);
    void help(/*_ void _*/);
    #endif
    char *dml_commands[] = {"SELECT", "select", "INSERT", "insert",
    "UPDATE", "update", "DELETE", "delete"};
    EXEC SQL INCLUDE sqlda;
    EXEC SQL INCLUDE sqlca;
    EXEC SQL BEGIN DECLARE SECTION;
    char dyn_statement[1024];
    EXEC SQL VAR dyn_statement IS STRING(1024);
    EXEC SQL END DECLARE SECTION;
    EXEC ORACLE OPTION (ORACA=YES);
    EXEC ORACLE OPTION (RELEASE_CURSOR=YES);
    SQLDA *bind_dp;
    SQLDA *select_dp;
    /* Define a buffer to hold longjmp state info. */
    jmp_buf jmp_continue;
    char *db_uid="dbmuser/dbmuser@dbmdb";
    sql_context ctx;
    int err_sql;
    enum{
    SQL_SUCC=0,
    SQL_ERR,
    SQL_NOTFOUND,
    SQL_UNIQUE,
    SQL_DISCONNECT,
    SQL_NOTNULL
    int main()
    int i;
    EXEC SQL ENABLE THREADS;
    EXEC SQL WHENEVER SQLERROR DO sql_error();
    EXEC SQL WHENEVER NOT FOUND DO sql_not_found();
    /* Connect to the database. */
    if (connect_database() < 0)
    exit(1);
    EXEC SQL CONTEXT USE :ctx;
    /* Process SQL statements. */
    for (;;)
    /* Allocate memory for the select and bind descriptors. */
    if (alloc_descriptors(MAX_ITEMS, MAX_VNAME_LEN, NAME_LEN) != 0)
    exit(1);
    (void) setjmp(jmp_continue);
    /* Get the statement. Break on "exit". */
    if (get_dyn_statement() != 0)
    break;
    EXEC SQL PREPARE S FROM :dyn_statement;
    EXEC SQL DECLARE C CURSOR FOR S;
    /* Set the bind variables for any placeholders in the
    SQL statement. */
    set_bind_variables();
    /* Open the cursor and execute the statement.
    * If the statement is not a query (SELECT), the
    * statement processing is completed after the
    * OPEN.
    EXEC SQL OPEN C USING DESCRIPTOR bind_dp;
    /* Call the function that processes the select-list.
    * If the statement is not a query, this function
    * just returns, doing nothing.
    process_select_list();
    /* Tell user how many rows processed. */
    for (i = 0; i < 8; i++)
    if (strncmp(dyn_statement, dml_commands, 6) == 0)
    printf("\n\n%d row%c processed.\n", sqlca.sqlerrd[2], sqlca.sqlerrd[2] == 1 ? '\0' : 's');
    break;
    /* Close the cursor. */
    EXEC SQL CLOSE C;
    /* When done, free the memory allocated for pointers in the bind and
    select descriptors. */
    for (i = 0; i < MAX_ITEMS; i++)
    if (bind_dp->V != (char *) 0)
    free(bind_dp->V);
    free(bind_dp->I); /* MAX_ITEMS were allocated. */
    if (select_dp->V != (char *) 0)
    free(select_dp->V);
    free(select_dp->I); /* MAX_ITEMS were allocated. */
    /* Free space used by the descriptors themselves. */
    SQLSQLDAFree(ctx, bind_dp);
    SQLSQLDAFree(ctx, select_dp);
    } /* end of for(;;) statement-processing loop */
    disconnect_database();
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    EXEC SQL COMMIT WORK RELEASE;
    puts("\nHave a good day!\n");
    return;
    * Allocate the BIND and SELECT descriptors using sqlald().
    * Also allocate the pointers to indicator variables
    * in each descriptor. The pointers to the actual bind
    * variables and the select-list items are realloc'ed in
    * the set_bind_variables() or process_select_list()
    * routines. This routine allocates 1 byte for select_dp->V
    * and bind_dp->V, so the realloc will work correctly.
    alloc_descriptors(size, max_vname_len, max_iname_len)
    int size;
    int max_vname_len;
    int max_iname_len;
    int i;
    * The first sqlald parameter determines the maximum number of
    * array elements in each variable in the descriptor. In
    * other words, it determines the maximum number of bind
    * variables or select-list items in the SQL statement.
    * The second parameter determines the maximum length of
    * strings used to hold the names of select-list items
    * or placeholders. The maximum length of column
    * names in ORACLE is 30, but you can allocate more or less
    * as needed.
    * The third parameter determines the maximum length of
    * strings used to hold the names of any indicator
    * variables. To follow ORACLE standards, the maximum
    * length of these should be 30. But, you can allocate
    * more or less as needed.
    if ((bind_dp =
    SQLSQLDAAlloc(ctx, size, max_vname_len, max_iname_len)) ==
    (SQLDA *) 0)
    fprintf(stderr,
    "Cannot allocate memory for bind descriptor.");
    return -1; /* Have to exit in this case. */
    if ((select_dp =
    SQLSQLDAAlloc(ctx, size, max_vname_len, max_iname_len)) == (SQLDA *)
    0)
    fprintf(stderr,
    "Cannot allocate memory for select descriptor.");
    return -1;
    select_dp->N = MAX_ITEMS;
    /* Allocate the pointers to the indicator variables, and the
    actual data. */
    for (i = 0; i < MAX_ITEMS; i++) {
    bind_dp->I = (short *) malloc(sizeof (short));
    select_dp->I = (short *) malloc(sizeof(short));
    bind_dp->V = (char *) malloc(1);
    select_dp->V = (char *) malloc(1);
    return 0;
    int get_dyn_statement()
    char *cp, linebuf[256];
    int iter, plsql;
    for (plsql = 0, iter = 1; ;)
    if (iter == 1)
    printf("\nSQL> ");
    dyn_statement[0] = '\0';
    fgets(linebuf, sizeof linebuf, stdin);
    cp = strrchr(linebuf, '\n');
    if (cp && cp != linebuf)
    *cp = ' ';
    else if (cp == linebuf)
    continue;
    if ((strncmp(linebuf, "EXIT", 4) == 0) ||
    (strncmp(linebuf, "exit", 4) == 0))
    return -1;
    else if (linebuf[0] == '?' ||
    (strncmp(linebuf, "HELP", 4) == 0) ||
    (strncmp(linebuf, "help", 4) == 0))
    help();
    iter = 1;
    continue;
    if (strstr(linebuf, "BEGIN") ||
    (strstr(linebuf, "begin")))
    plsql = 1;
    strcat(dyn_statement, linebuf);
    if ((plsql && (cp = strrchr(dyn_statement, '/'))) ||
    (!plsql && (cp = strrchr(dyn_statement, ';'))))
    *cp = '\0';
    break;
    else
    iter++;
    printf("%3d ", iter);
    return 0;
    void set_bind_variables()
    int i, n;
    char bind_var[64];
    /* Describe any bind variables (input host variables) */
    EXEC SQL WHENEVER SQLERROR DO sql_error();
    bind_dp->N = MAX_ITEMS; /* Initialize count of array elements. */
    EXEC SQL DESCRIBE BIND VARIABLES FOR S INTO bind_dp;
    /* If F is negative, there were more bind variables
    than originally allocated by sqlald(). */
    if (bind_dp->F < 0)
    printf ("\nToo many bind variables (%d), maximum is %d\n.",
    -bind_dp->F, MAX_ITEMS);
    return;
    /* Set the maximum number of array elements in the
    descriptor to the number found. */
    bind_dp->N = bind_dp->F;
    /* Get the value of each bind variable as a
    * character string.
    * C contains the length of the bind variable
    * name used in the SQL statement.
    * S contains the actual name of the bind variable
    * used in the SQL statement.
    * L will contain the length of the data value
    * entered.
    * V will contain the address of the data value
    * entered.
    * T is always set to 1 because in this sample program
    * data values for all bind variables are entered
    * as character strings.
    * ORACLE converts to the table value from CHAR.
    * I will point to the indicator value, which is
    * set to -1 when the bind variable value is "null".
    for (i = 0; i < bind_dp->F; i++)
    printf ("\nEnter value for bind variable %.*s: ",
    (int)bind_dp->C, bind_dp->S);
    fgets(bind_var, sizeof bind_var, stdin);
    /* Get length and remove the new line character. */
    n = strlen(bind_var) - 1;
    /* Set it in the descriptor. */
    bind_dp->L = n;
    /* (re-)allocate the buffer for the value.
    sqlald() reserves a pointer location for
    V but does not allocate the full space for
    the pointer. */
    bind_dp->V = (char *) realloc(bind_dp->V, (bind_dp->L + 1));
    /* And copy it in. */
    strncpy(bind_dp->V, bind_var, n);
    /* Set the indicator variable's value. */
    if ((strncmp(bind_dp->V, "NULL", 4) == 0) ||
    (strncmp(bind_dp->V, "null", 4) == 0))
    *bind_dp->I = -1;
    else
    *bind_dp->I = 0;
    /* Set the bind datatype to 1 for CHAR. */
    bind_dp->T = 1;
    return;
    void process_select_list()
    int i, null_ok, precision, scale;
    if ((strncmp(dyn_statement, "SELECT", 6) != 0) &&
    (strncmp(dyn_statement, "select", 6) != 0))
    select_dp->F = 0;
    return;
    /* If the SQL statement is a SELECT, describe the
    select-list items. The DESCRIBE function returns
    their names, datatypes, lengths (including precision
    and scale), and NULL/NOT NULL statuses. */
    select_dp->N = MAX_ITEMS;
    EXEC SQL DESCRIBE SELECT LIST FOR S INTO select_dp;
    /* If F is negative, there were more select-list
    items than originally allocated by sqlald(). */
    if (select_dp->F < 0)
    printf ("\nToo many select-list items (%d), maximum is %d\n",
    -(select_dp->F), MAX_ITEMS);
    return;
    /* Set the maximum number of array elements in the
    descriptor to the number found. */
    select_dp->N = select_dp->F;
    /* Allocate storage for each select-list item.
    sqlprc() is used to extract precision and scale
    from the length (select_dp->L).
    sqlnul() is used to reset the high-order bit of
    the datatype and to check whether the column
    is NOT NULL.
    CHAR datatypes have length, but zero precision and
    scale. The length is defined at CREATE time.
    NUMBER datatypes have precision and scale only if
    defined at CREATE time. If the column
    definition was just NUMBER, the precision
    and scale are zero, and you must allocate
    the required maximum length.
    DATE datatypes return a length of 7 if the default
    format is used. This should be increased to
    9 to store the actual date character string.
    If you use the TO_CHAR function, the maximum
    length could be 75, but will probably be less
    (you can see the effects of this in SQL*Plus).
    ROWID datatype always returns a fixed length of 18 if
    coerced to CHAR.
    LONG and
    LONG RAW datatypes return a length of 0 (zero),
    so you need to set a maximum. In this example,
    it is 240 characters.
    printf ("\n");
    for (i = 0; i < select_dp->F; i++)
    char title[MAX_VNAME_LEN];
    /* Turn off high-order bit of datatype (in this example,
    it does not matter if the column is NOT NULL). */
    sqlnul ((unsigned short *)&(select_dp->T), (unsigned short
    *)&(select_dp->T), &null_ok);
    switch (select_dp->T)
    case 1 : /* CHAR datatype: no change in length
    needed, except possibly for TO_CHAR
    conversions (not handled here). */
    break;
    case 2 : /* NUMBER datatype: use sqlprc() to
    extract precision and scale. */
    sqlprc ((unsigned int *)&(select_dp->L), &precision,
    &scale);
    /* Allow for maximum size of NUMBER. */
    if (precision == 0) precision = 40;
    /* Also allow for decimal point and
    possible sign. */
    /* convert NUMBER datatype to FLOAT if scale > 0,
    INT otherwise. */
    if (scale > 0)
    select_dp->L = sizeof(float);
    else
    select_dp->L = sizeof(int);
    break;
    case 8 : /* LONG datatype */
    select_dp->L = 240;
    break;
    case 11 : /* ROWID datatype */
    case 104 : /* Universal ROWID datatype */
    select_dp->L = 18;
    break;
    case 12 : /* DATE datatype */
    select_dp->L = 9;
    break;
    case 23 : /* RAW datatype */
    break;
    case 24 : /* LONG RAW datatype */
    select_dp->L = 240;
    break;
    /* Allocate space for the select-list data values.
    sqlald() reserves a pointer location for
    V but does not allocate the full space for
    the pointer. */
    if (select_dp->T != 2)
    select_dp->V = (char *) realloc(select_dp->V,
    select_dp->L + 1);
    else
    select_dp->V = (char *) realloc(select_dp->V,
    select_dp->L);
    /* Print column headings, right-justifying number
    column headings. */
    /* Copy to temporary buffer in case name is null-terminated */
    memset(title, ' ', MAX_VNAME_LEN);
    strncpy(title, select_dp->S, select_dp->C);
    if (select_dp->T == 2)
    if (scale > 0)
    printf ("%.*s ", select_dp->L+3, title);
    else
    printf ("%.*s ", select_dp->L, title);
    else
    printf("%-.*s ", select_dp->L, title);
    /* Coerce ALL datatypes except for LONG RAW and NUMBER to
    character. */
    if (select_dp->T != 24 && select_dp->T != 2)
    select_dp->T = 1;
    /* Coerce the datatypes of NUMBERs to float or int depending on
    the scale. */
    if (select_dp->T == 2)
    if (scale > 0)
    select_dp->T = 4; /* float */
    else
    select_dp->T = 3; /* int */
    printf ("\n\n");
    /* FETCH each row selected and print the column values. */
    EXEC SQL WHENEVER NOT FOUND GOTO end_select_loop;
    for (;;)
    EXEC SQL FETCH C USING DESCRIPTOR select_dp;
    /* Since each variable returned has been coerced to a
    character string, int, or float very little processing
    is required here. This routine just prints out the
    values on the terminal. */
    for (i = 0; i < select_dp->F; i++)
    if (*select_dp->I < 0)
    if (select_dp->T == 4)
    printf ("%-*c ",(int)select_dp->L+3, ' ');
    else
    printf ("%-*c ",(int)select_dp->L, ' ');
    else
    if (select_dp->T == 3) /* int datatype */
    printf ("%*d ", (int)select_dp->L,
    *(int *)select_dp->V);
    else if (select_dp->T == 4) /* float datatype */
    printf ("%*.2f ", (int)select_dp->L,
    *(float *)select_dp->V);
    else /* character string */
    printf ("%-*.*s ", (int)select_dp->L,
    (int)select_dp->L, select_dp->V);
    printf ("\n");
    end_select_loop:
    return;
    void help()
    puts("\n\nEnter a SQL statement or a PL/SQL block at the SQL> prompt.");
    puts("Statements can be continued over several lines, except");
    puts("within string literals.");
    puts("Terminate a SQL statement with a semicolon.");
    puts("Terminate a PL/SQL block (which can contain embedded
    semicolons)");
    puts("with a slash (/).");
    puts("Typing \"exit\" (no semicolon needed) exits the program.");
    puts("You typed \"?\" or \"help\" to get this message.\n\n");
    int connect_database()
    err_sql = SQL_SUCC;
    EXEC SQL WHENEVER SQLERROR DO sql_error();
    EXEC SQL WHENEVER NOT FOUND DO sql_not_found();
    EXEC SQL CONTEXT ALLOCATE :ctx;
    EXEC SQL CONTEXT USE :ctx;
    EXEC SQL CONNECT :db_uid;
    if(err_sql != SQL_SUCC){
    printf("err => connect database(ctx:%ld, uid:%s) failed!\n", ctx, db_uid);
    return -1;
    return 1;
    int disconnect_database()
    err_sql = SQL_SUCC;
    EXEC SQL WHENEVER SQLERROR DO sql_error();
    EXEC SQL WHENEVER NOT FOUND DO sql_not_found();
    EXEC SQL CONTEXT USE :ctx;
    EXEC SQL COMMIT WORK RELEASE;
    EXEC SQL CONTEXT FREE:ctx;
    return 1;
    void sql_error()
    printf("err => %.*s", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);
    printf("in \"%.*s...\'\n", oraca.orastxt.orastxtl, oraca.orastxt.orastxtc);
    printf("on line %d of %.*s.\n\n", oraca.oraslnr, oraca.orasfnm.orasfnml,
    oraca.orasfnm.orasfnmc);
    switch(sqlca.sqlcode) {
    case -1: /* unique constraint violated */
    err_sql = SQL_UNIQUE;
    break;
    case -1012: /* not logged on */
    case -1089:
    case -3133:
    case -1041:
    case -3114:
    case -3113:
    /* �6�Ŭ�� shutdown�ǰų� �α��� ���°� �ƴҶ� ��b�� �õ� */
    /* immediate shutdown in progress - no operations are permitted */
    /* end-of-file on communication channel */
    /* internal error. hostdef extension doesn't exist */
    err_sql = SQL_DISCONNECT;
    break;
    case -1400:
    err_sql = SQL_NOTNULL;
    break;
    default:
    err_sql = SQL_ERR;
    break;
    EXEC SQL CONTEXT USE :ctx;
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    EXEC SQL ROLLBACK WORK;
    void sql_not_found()
    err_sql = SQL_NOTFOUND;

    Hi Jane,
    What version of Berkeley DB XML are you using?
    What is your operating system and your hardware platform?
    For how long have been the application running?
    What is your current container size?
    What's set for EnvironmentConfig.setThreaded?
    Do you know if containers have previously not been closed correctly?
    Can you please post the entire error output?
    What's the JDK version, 1.4 or 1.5?
    Thanks,
    Bogdan

  • How can i add a progress bar to my UIwebview

    i have a page in my application where i have a UIWebview what i want to do is have a progress bar somewhere on the screen to indicate the loading status on the page.

    Go to your xib file or storyboard file, then you should see Progress view in the objects.

  • How can I use a progress bar in objective c mac

    How can I use a progress bar in objective c mac? I have a code that downloads a file and I want to be able to let the progress bar increase by 1. A bit further on the code (to download the file) it needs to increase again. And so on...
    My code
    -(IBAction) downloadButtonPressed:(id)sender;{
        //get the path to the image that we're going to download
        NSURL *url = [NSURL URLWithString:@"https://www.dropbox.com/s/l6o07m48npxknt4/Cluedo.zip?dl=1"];
        //get the path to documents folder where we're going to save our image
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *DocumentsDirectory = [paths objectAtIndex:0];
        NSString *filePath = [DocumentsDirectory stringByAppendingPathComponent:@"Cluedo.zip"];
        //Download the file to memory
        NSData *data = [NSData dataWithContentsOfURL:url];
        NSError *error = nil;
        //Save it on the Documents directory
        [data writeToFile:filePath options:NSDataWritingAtomic error:&error];
        NSFileManager* fm = [NSFileManager defaultManager];
        NSString* zipPath = filePath;
        NSString* targetFolder = @"/Applications"; //this it the parent folder
        //where your zip's content
        //goes to (must exist)
        //create a new empty folder (unzipping will fail if any
        //of the payload files already exist at the target location)
        [fm createDirectoryAtPath:targetFolder withIntermediateDirectories:NO
                       attributes:nil error:NULL];
        //now create a unzip-task
        NSArray *arguments = [NSArray arrayWithObject:zipPath];
        NSTask *unzipTask = [[NSTask alloc] init];
        [unzipTask setLaunchPath:@"/usr/bin/unzip"];
        [unzipTask setCurrentDirectoryPath:targetFolder];
        [unzipTask setArguments:arguments];
        [unzipTask launch];
        //[unzipTask waitUntilExit]; //remove this to start the task concurrently

    Your code really isn't suitable for a progress bar, not a real one anyway. Your code will spend about 99.9% of its time in the method "dataWithContentsOfURL:url". That is not a method you want to use in the real world. It is only for demos or proof of concept exercises. All network operations should be asynchronous. That gives you the ability to gracefully recover when there is a failure and also to do fancy things like display a progress bar and tell the user when the download is complete.
    Once you get the asynchronous download logic working, then you can worry about the progress bar. The first thing you will need is the size of the file. Without that, all you can ever do is an indeterminate progress bar or spinner. If you have the size of the file, then you can keep track of how much of the file you have downloaded and update your progress bar with the percentage complete. Make sure to throttle it to no more than incrementing by 1% at a time. Otherwise, a large file or a file transferred in many small chunks, would waste too much time updating the progress bar for no change.

  • How can I play a movie in iTunes mini player?  (Progress bar button broken?)

    It took forever to figure out how to get iTunes to even OPEN a new window for movie playback, but once I finally found instructions (click the button with movie art to the left of the progress bar to open in new window) they only partially worked.  A new window opens, but movie playback continues in the main window.  The new window shows a freeze frame of the scene displayed at the moment I clicked the progress bar button.  The new window looks just like the mini player, and its control buttons work, but they effect the main window's movie playback not the new window/mini player where I want to watch the movie.
    Is it my progress bar that's broken?  I'm all updated with iTunes version 11.1.5.  Does this version not play well with my OS X 10.6.8?
    Ultimately I just want to be able to play a movie in the mini player while using other applications; surely that's possible.
    [Also, on the "Operating System" dropdown menu below, I just selected OS X 10.6.8 and then the dropdown showed "No operating system selected" and the selection arrows no longer work.  Any ideas what happened?  My MacBook Old feels so janky right now.]

    You need to convert the AVI file to MP4.  Here is just one of the many converters available (via Google) http://www.divx.com/en/software/divx-plus/oca/mp4-converter?gclid=CJnqnpaF37gCFc fJtAod8RUAeg

Maybe you are looking for

  • Writing from internal table to xml format

    Hi, I searched all the forum and I have a question on writing the data from internal table in xml format to the file on app.server. Data: ITAB1   TYPE TABLE OF SPFLI,          L_XML  TYPE REF TO CL_XML_DOCUMENT.   SELECT * FROM SPFLI INTO TABLE ITAB1

  • IPhoto 6.06 Slideshow Issue

    We have a MacBook that we need to be able to use for a slideshow from an iPhoto Event.  It has iPhoto 6.06 and, when I try to run the slideshow, all I get is a blue screen with the control items for play, pause, etc.  Clicking on it gets nothing.  Wh

  • Ios6 - wifi log in does not appear for secured network

    Hi, I installed ios6 on my ipad2 last night. Today - when I connect to a secure wifi network via settings, the log in screen does not appear, like it used to do automatically. Is this an issues with the OS? Can anyone suggest a fix or a solution? Tha

  • Download Safari

    I was prompted to update several applications last night. After updating, I find that Safari won't now. It quits "unexpectedly" and says - Exception Type:    EXC_BAD_ACCESS (SIGSEGV) Exception Codes:   KERN_INVALID_ADDRESS at 0x0000000000000020 and a

  • Multiple sockets - many client one server

    I have multiple clients (a handfull) that will be sending a lot of messages per second. I have one server that I want to handle all of those methods. From what I've seen, there are some good multi-threading examples out there. I have seen one or two