Lm137 model behavior

I have a spice model for a LM137 negative voltage regulator which I obtained from a McGill website (http://www.rcsm.ece.mcgill.ca/~rfic/EC2/SPICE_MODE​L_LIB.htm). I have developed a simulation using this device as well as the standard LM117 provided by multisim to regulate a positive/negative DC source. It works well. (The model for the 137 is considerably more complex that the 117).
Now then, when I replace the DC power with a rectified AC source the simulation aborts with a timestepping error. When I switch the LM137 out, the simulation runs. adding big filter caps dosn't help.
However, ifI run the simulation with a DC source for a short while then switch out the DC and switch in the AC simultaneously then the simulation is correct. 
Can anyone tell me (I'm a student not a guru) what is happening and how to fix the problem. The LM137 model is below.
* MANUFACTURERS PART NO. = LM137HVH (NATIONAL SEMICONDUCTOR)
* SUBTYPE: REGULATOR
* THIS FILE CONTAINS A PRE-RAD MODEL AT 27 C OF THE LM137HVH THAT WAS
* DEVELOPED UNDER THE GUIDANCE OF GREGORY M. WIERZBA AT
* MICHIGAN STATE UNIVERSITY.
* PLEASE NOTE THE FOLLOWING:
* 1) THIS MODEL IS TO BE USED FOR ROOM TEMPERATURE SIMULATIONS. THE BUILT-
* IN SPICE TEMPERATURE CORRECTIONS WILL NOT WORK.
* 2) RIPPLE REJECTION, OUTPUT IMPEDANCE, LINE TRANSIENT, AND LOAD
* TRANSIENT RESPONSE ARE MODELED BASED ON LABORATORY
* MEASUREMENTS. THE CORRELATION IS QUITE GOOD. THE SIMULATION VALUES
* ARE WITHIN THE PRODUCT SPEC LIMITS.
* 3) CURRENT LIMITING AND ADJUSTMENT CURRENT BASED ON DATA SHEET
* INFORMATION ARE MODELED ACCURATELY.
* 4) DROPOUT AND POWER UP CHARACTERISTICS HAVE NOT BEEN DEVELOPED YET
* IN THIS MODEL.
* 5) FOR FURTHER DETAILS AND THE MODEL DERIVATION, OBTAIN A COPY OF
* "CA3085, LM7805, LM7812, LM7905, LM137 MACROMODEL DEVELOPMENT" BY G. M.
* WIERZBA DATED 3/25/91.
.SUBCKT LM137HVH 1 2 3
* IN | |
* OUT |
* ADJ
VREF 12 4 DC 1.25
EREG 3 12 1 2 0.0001981
IBIAS 4 1 DC 65U
RIN 4 20 100MEG
E1 5 1 20 4 600
R1 5 6 1561
RPZ 6 11 0.01
C1 11 1 1U
E2 7 1 6 1 1
RB1 7 17 25
RB2 17 8 50
DLIMIT 17 18 DMOD
ELIMIT 18 1 POLY (1) (2,1) .24 -0.0024
DFLDBCK 17 19 DMOD
EFLDBCK 19 1 POLY(1) (2,1) 1.0611 -0.0912 0.0026 -2.5E-5
CBC 8 9 1U
RBC 9 20 1561
QPASS 20 8 1 QMOD
RBOND 20 2 0.0063
.MODEL QMOD NPN(
+ IS = 1E-16
+ BF = 500
+ NF = 1
+ VAF = 150
+ IKF = 9.9999E+13
+ ISE = 0
+ NE = 1.5
+ BR = 1
+ NR = 1
+ VAR = 9.9999E+13
+ IKR = 9.9999E+13
+ ISC = 0
+ NC = 2
+ RB = 0
+ IRB = 9.9999E+13
+ RBM = 0
+ RE = 0
+ RC = 0
+ CJE = 0
+ VJE = .75
+ MJE = .33
+ TF = 0
+ XTF = 0
+ VTF = 9.9999E+13
+ ITF = 0
+ PTF = 0
+ CJC = 0
+ VJC = .75
+ MJC = .33
+ XCJC = 1
+ TR = 0
+ CJS = 0
+ VJS = .75
+ MJS = 0
+ XTB = 0
+ EG = 1.11
+ XTI = 3
+ KF = 0
+ AF = 1
+ FC = .5
+ )
.MODEL DMOD D(
+ IS = 1E-15.9
+ RS = 0
+ N = 1
+ TT = 0
+ CJO = 0
+ VJ = 1
+ M = .5
+ EG = 1.11
+ XTI = 3
+ KF = 0
+ AF = 1
+ FC = .5
+ BV = 9.9999E+13
+ IBV = .001
+ )
.ENDS LM137HVH
*$

Answered my own question. For the knowledge base, RC snubbers on the power supply did the trick.
Evidently the more simple model used for the positive regulator was immune to the effect.

Similar Messages

  • How java support multiple inheritance by the use of interface.

    As per my understanding, Interface is just having the signatures of the methods not the implementation.
    So How java support multiple inheritance by the use of interface?
    Answer 1: we can institate interface reference by its implemented
    class.
              ����� interface inf...
              ����� class aa implements inf..
              ����� class bb implements inf....
               Now, inf i = new aa();
               inf i = new bb();
    Answer 2: We can extends as many interface as we want in the
    single
               interface.
               i.e. interface infFirst....
               interface infSecond....
               interface infThird....
               Now ,
               interface ingMulti extends infFrist, infThird...
    By above two answers its not prity clear as per the multiple inheritance in C or C++.
               i.e.
               class first{
               method abc();....}
               class second{
               method bbc()......}
               class multi::first::second{
               we can call to abc();.....as well as bbc();
    -Please give your important suggstion on the same.(Hope I explain it well.)
    -Jeff

    The keyword implement is used only for interfaces not
    for abstract class. If i am wrong correct me.I believe your right, but I will double check.
    As for the multiple inheritence think about the following code:
    class Animal {
        //  Animal generic stuff in this class
    interface Eat {
        //  Generic stuff that models eating behavior
    interface Runs {
        //  generic methods that model running behavior
    public class Horse extends Animal implements Eat, Runs {
        //  Stuff specific to a horse
    }The Animal class is generic but has stuff in it common to all animals.
    The Eat interface models behavior that is generic to eating, all living things have to eat something to survive. Herbavore are different from carnivores.
    The Runs interface models generic behavior to running, such as speed. A cheeta definately runs faster than a human.
    This brings us to the Horse class. It extends the Animal class because it "is-a" animal, and it implements the eat and runs interface because they are behaviors a horse has.
    I hope that helps.
    Extending an abstract class is the same as extending a regular class with the exception you MUST override all abstract methods in the abstract class. Thats not too difficult but I believe when designing classes, designing an abstract can be more diffecult than modeling the base class, and generic behaviors in interfaces. JMO.
    JJ

  • Import from Server Tabular Project creating a new Tabular DB?

    Hi,
    I have a Tabular database on a server want to make some changes to it, for that I have imported Tabular DB through BIDS and trying to makes changes, and what I see is every time I import the tabular DB its creating a New DB on the server with <DBName><UserName><GUID>.
    Is this the Tabular Model behavior or an I missing anything here? 
    How to make the changes to the existing Tabular? 
    Thanks

    Hi SQL_Gun,
    According to your description, you want to modify an existing tabular database. Right?
    In Analysis Services Tabular mode, once the "Import from Server" project is created, the Workspace database will appear in the Analysis Services instance specified in the
    Workspace Server property. The name cannot be set in the Properties window. The default setting of Workspace database is the project name, followed by an underscore, followed by the username, followed by an underscore, followed by a GUID. In this
    scenario, I suggest open the original project which created that tabular database. Modify the project and redeploy it.
    Reference:
    Workspace Database (SSAS Tabular)
    If you have any question, please feel free to ask.
    Simon Hou
    TechNet Community Support

  • Different LOV behavior between SQL query data model and data template

    I have noticed different behavior when using parameters linked to list of values (LOV) of type menu with the multiple selection option enabled and a SQL query data model vs a data template. Here's the example because that first sentence was probably really confusing.
    SQL Query:
    select
    plmc.MonthCode, plmc.ModalityDim, plmc.ModalityName,plmc.RegionDim
    from
    DataOut.dbo.PatientLabMonthlyCross plmc
    where
    plmc.MonthCode = 200202
    and plmc.RegionDim = 1209
    and 1 =
    case
    when coalesce(:modalityDim,null) is null
    then 1
    else
    case
    when plmc.ModalityDim in (:modalityDim)
    then 1
    else 0
    end
    end
    Putting BI Publisher into debug mode, defining a data model of type SQL Query, defining a parameter called :modalityDim linked to a LOV that allows multiple selections, and selecting a couple of values from the LOV the output of the prepared statement is:
    [081607_122647956][][STATEMENT] Sql Query : select
    plmc.MonthCode,
    plmc.ModalityDim,
    plmc.ModalityName,
    plmc.RegionDim
    from
    DataOut.dbo.PatientLabMonthlyCross plmc
    where
    plmc.MonthCode = 200202
    and plmc.RegionDim = 1209
    and 1 =
    case
    when coalesce(?,?,null) is null
    then 1
    else
    case
    when plmc.ModalityDim in (?,?)
    then 1
    else 0
    end
    end
    [081607_122647956][][STATEMENT] 1:6
    [081607_122647956][][STATEMENT] 2:7
    [081607_122647956][][STATEMENT] 3:6
    [081607_122647956][][STATEMENT] 4:7
    [081607_122654713][][EVENT] Data Generation Completed...
    [081607_122654713][][EVENT] Total Data Generation Time 7.0 seconds
    Note how the bind variable :modalityDim was changed into two parameters in the prepared statement.
    When I use this same SQL Query in a data template the output is:
    [081607_012113018][][STATEMENT] Sql Query : select
    plmc.MonthCode,
    plmc.ModalityDim,
    plmc.ModalityName,
    plmc.RegionDim
    from
    DataOut.dbo.PatientLabMonthlyCross plmc
    where
    plmc.MonthCode = 200202
    and plmc.RegionDim = 1209
    and 1 =
    case
    when coalesce(?,null) is null
    then 1
    else
    case
    when plmc.ModalityDim in (?)
    then 1
    else 0
    end
    end
    [081607_012113018][][STATEMENT] 1:'6','7'
    [081607_012113018][][STATEMENT] 2:'6','7'
    [081607_012113574][][EXCEPTION] java.sql.SQLException: Syntax error converting the nvarchar value ''6','7'' to a column of data type int.
    Note the exception because it is trying to convert the multiple parameter values.
    Am I doing something completely wrong here? I really need to use a data template because I will need to link a couple of queries together from different database vendors.
    -mark

    This is for 10.1.3.4 - because in 11g every SQL query is automatially part of a data model.
    In 10g SQL query is for simple unrelated SQL queries.
    If you need to use advance features such as:
    a) multiple SQL queries that are joined in master-detail relation ships
    b) before/after report triggers
    Then you will need to use the data template, which is an XML description
    of the queries, links, and PL/SQL calls.
    hope that helps,
    Klaus

  • Model="${data.someUIModel.someColumn}" Behavior

    Good Afternoon,
    I understand stateless behavior was not implemented in the preview. But, when I invoke a mutator on a row column and commit that transaction, is there a way to [u][i]manually force the model to reload?
    My struts:action event returns null. On return, my page dose not reflect the changes. It displays the cached results of the model. If I look at the table via SQL I can see my changes.
    Thanks

    Good Morning,
    I am doing what you mentioned here.
    10g ADF : how to update the binding values in the UI layer ?
    My page is a Form. It dose not contain a Table. Now, when my code executes:
    DCRowSetIteratorImpl dcRowIterator=(DCRowSetIteratorImpl)dcBindingContainer.getRowSetIterator();
    I receive a ClassCastException.
    I took a look at what Class it expected:
    RowSetIterator dcRowIterator=dcBindingContainer.getRowSetIterator();
    System.out.println("Class --> "+dcRowIterator.getClass());
    I receive this: packagename.MyValidViewImpl@1fb7cbb
    Next I did this to look at the row:
    dcRowIterator.getCurrentRow().getAttributeValues();
    The values are as expected. My page (form) displays its values using this format:
    <messageTextInput columns="20"
    name="aValidColumnName"
    styleClass="myFavoriteStyle"
    model="${data.myValidUIModel.aValidColumnName"/>
    When I return from my struts:action, I see the old values; my model has not refreshed itself.
    Thanks

  • What will be the immediate behavior of server once the model, msdb, tempdbs are corrupted?

    Hi,
    Can someone help me to get the below information.
    What will be the immediate behavior of server once the model, msdb, tempdbs are corrupted?

    Can someone help me to get the below information.
    What will be the immediate behavior of server once the model, msdb, tempdbs are corrupted?
    If any of Model or Tempdb is corrupted SQL Server would not come online.
    Tempdb is created from copy of model database so if model is corrupted tempdb wont be created and tempdb is not created SQL Server cannot come online.
    SQL Server can come online is msdb is corrupt but jobs and packages wont be accessible.
    There are various trace flag which can help you to bring Database *kind of online* if model or tempdb is corrupted
    Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it
    My Technet Wiki Article
    MVP

  • Strange behavior in model of RFC BAPI_REQUISITION_GETDETAIL

    Hi Experts
    I have developped an application in web dynpro with Adaptive RFC pointing to rfc BAPI_REQUISITION_GETDETAIL and BAPI_REQUISITION_CREATE.
    When i use the second one to create a purchase request, all is ok.
    Then, i get the number of purchase request and with this number i execute the model of bapi_requisition_getdetail. In this moment something strange happen. In return node of this model, i receive a mesage PURCHASE REQUISITION <number of requisition> DOES NOT EXIST.
    But i access in SAPGUI and i execute the same BAPI in transaction se37, i put the number requisition generated and th returning is sucessfull. The purchase requisition is really created.
    In a short way, in SAPGUI the rfc BAPI_REQUISITION_GETDETAIL works fine, in my web dynpro application i get the message mencioned above.
    Can someone help me in this issue?
    I am using netweaver 7.1 ehp1.
    Regards
    Marcos

    Hi Marcos,
    Just print the requisition number returned from the CREATE Bapi and the one which is passed to the GETDETAILS bapi. Please check that they are not different. Now, what you need to do is after you have called modelObject().execute() method to execute the model, invalidate the Output node within your Model node to refresh the context everytime the Bapi is called or else the previous value would be retained in the output node of your model node.
    BAPI_REQUISITION_GETDETAIL input = new REQUISITIONGETDETAIL();
    input.set(....);
    wdContext.node<YourModelNode>.bind(input);
    try{
    wdContext.current<Your Model Node>Element().modelObject().execute();
    wdContext.node<YourModelNode>.node<Output Node>().invalidate();
    }catch(Exception e){
    Regards,
    Tushar Sinha

  • Strange RFC model field behavior

    Hi all
    I'm working with an RFC that have a table structure Foo_Item that contains the field Postion. This field has ABAP component type BUZEI and data type NUMC.
    This is represented in Java as a String. My problem is that it displays as "000" when the value of the field is null. I would like it to display "" (the empty string).
    Consider this code (in the component controller):
    Foo_Item oldItem = <some instance of Foo_Item>
    Foo_Item.setPostion(null);
    if (Foo_Item != null) {
        Foo_Item newItem = new Foo_Item();
        // Here, newItem.getPostion() -> null
        WDCopyService.copyCorresponding(oldItem, newItem);
        // Now, newItem.getPostion() -> "000"
        newItem().setPostion(null);
        // Mindblowingly, newItem.getPostion() -> "000" still!
    Now, something strange is going on behind the scenes here. Can anyone point me in the right direction?
    -martin

    Hi Martin,
    There is a class behind the scenes that returns a String but internally represents a NUMC.
    You will have to copy your value in a normal String and remove the leading zeros (If you do not want any leading zeros that is)
    //@@begin javadoc:removeLeadingZeros()
         /** Declared method. */
      //@@end
      public java.lang.String removeLeadingZeros( java.lang.String inString )
        //@@begin removeLeadingZeros()
              String outString = "";
              if (inString != null) {
                   int length = inString.length();
                   for (int i = 0; i < length; i++) {
                        char s = inString.charAt(i);
                        if (s == '0') {
                             //do nothing here
                        } else {
                             outString = inString.substring(i);
                             break;
              return outString;
        //@@end
    Regards,
    Jeschael

  • Can anyone explain this behavior and tell me how to fix it?

    Using NetBeans 6.5 on Windows, Glassfish v2.1
    I have a JSF application with a page that has a tab set.
    On one of the tabs I have a panel with company information.
    One of the components on the page is an InputText field with the value bound to a session bean variable.
    The tab also has an Add button.
    Here is what the JSP looks like for the input text and button components
       <h:inputText binding="#{MainPage.companyNameTF}" id="companyNameTF" readonly="#{SessionBean1.readOnlyFlag}"
       <h:commandButton action="#{MainPage.mainAddBtn_action}" disabled="#{SessionBean1.disableEdit}" id="mainAddBtn"
            style="font-family: Arial,Helvetica,sans-serif; font-size: 14px; font-weight: bold; left: 425px; top: 380px; position: absolute; width: 75px" value="Add"/>
         This is all plain vanilla stuff and I would expect that when the Add button is pushed, the session bean property would be filled with
    the value entered in the input text field.
    In the java code for the page, I have a method to process the Add button push.
    Originally, it just called a method in the session bean to check that a value was entered in the input text field by checking the bound
    session bean property.
    For some reason, that was not getting filled and I was getting either a null or empty string rather than the value in the text field.
    I added some checking in the method that processes the Add button push so I could check the values in the debugger.
    Here is a sample of that code:
        public String mainAddBtn_action() {
            String s = sb1.getCompanyName();
            s = (String)this.companyNameTF.getValue();
            s = (String)this.companyNameTF.getSubmittedValue();I check this in the debugger and NONE of the variants that I have listed have the value that was entered into the text field.
    The submittedValue is null and the others are empty strings (that is what they were initalized to).
    This is all pertty straight forward stuff and I am at a loss to explain what is happening.
    Can anyone expain this behavior, and, most important, how can I force the values to be present when the Add button is pushed.
    I have never experienced this problem before, and have no clue what is causing it.
    Thanks.

    Basically, the component bindings are just being used in plain vanilla get/set modes.
    I set them to "" when I do a clear for the fields and they are set to a value via the text field.
    No other action other than to read the values via get to insert them into the database.
    And, I always use the get/set methods rather than just setting the value directly.
    This is what is so strange about this behavior - I have created dozens of database add/update/delete pages using this same model and have not had a problem with them - even in a tab context.
    Not a clue why this one is different.
    I did notice that I had an error on the page (in IE7, you get a small triangle warning sign when something is not right).
    I figured that might be the problem - maybe buggering up the rendering process.
    I tracked that down and do not get that anymore (it had to do with the PDF display I was trying to get working a while back), but that did not resolve the problem.
    I don't think there are any tab conflicts - none of the components are shared between tabs, but I will see what happens when I move a couple of the components out of the tab context.
    I noticed that it seems to skip a cycle. Here is what I can do.
    1) Fill in text fields and add a record - works fine the first time.
    2) Clear the text fields
    3) Enter new data in the text fields and push Add
    4) I get an error saying fields are blank from my data check process.
    5) Enter new data and push Add - the record is added with the new data.
    My work around is to not enter data in step 3 and just accept the error message in step 4, then go ahead and enter the real data in step 5.
    Very ugly, but it works every time.

  • Conflict between Client object model and Item Updated Event Receiver in sharepoint 2010

    Hello All,
    As per my requirement I have a two custom list.
    Agent Details
    Port Name
    Agent Details contains Agent code, Port Name,  email, address and phone of Agent. Its possible that one Agent Code is connected with multiple Port Name.
    Basically what I am doing is I am getting port name connected with Agent code, using jquery and bind those values with check box(using javascript created dynamically) and bind all with Div tag.
    Now when my custom edit form of Agent list open up it shows me different port name binding with checkbox group.
    when user select the check box and click confirm button my clicent object model script will run and add this selected value into Port Name list. 
    After confirm one more button named Save will enable asking user to edit the email, phone or address value and when I click on save my Item updated event fires which update the values of the selected port name(These port name I am getting from port
    name list) to Agent Details custom list.
    Now when I am trying to update the values my event receiver fires or some times it got stuck(not firing). So could you please help me the possible alternative for this requirements.
    Can we user the Ecma Script(Client object model to preserve the value of selectec port) and Item updated event receiver on the same time?
    Is anything am doing wrong then please guide me.

    Hi,
    As I understand, when you updated values in the agent details list the Item updated event receiver got stuck sometimes.
    The item update event receiver will fire after the item has been saved, and the client object model script or the Ecma Script runs before the item is saved, so there is no conflict between the client object model script and item update event receiver.
    You could find out the reason about the item update event receiver gets stuck by debugging the event receiver.
    When you want to debug your event receivers, you have to attach to OWSTIMER.EXE and wait till they are executed. You can control this behavior using the Synchronization attribute. Also, if you’re looking for an easy way to debug an event receiver without
    having to manually attach a debugger to your code, you can use the System.Diagnostics.Debugger.Launch() method.
    The articles below are about how to debug in the event receiver in SharePoint 2010.
    http://sharepoint-kings.blogspot.jp/2013/02/debugging-event-receivers-in-sharepoint.html
    http://chakkaradeep.com/index.php/event-receivers-in-sharepoint-2010/
    http://sharesaint.com/?p=77
    Best regards,
    Sara Fan
    TechNet Community Support
    Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
    [email protected]

  • ATP FUNCTIONALITY NOT WORKING CORRECTLY FOR ATO Model

    Guru's,
    Currently I am facing issue in ATP Inquiry to arrive at schedule ship date, we have set up an ATO Model and its low-level parts for multi level ATP, including ATP rules, item attributes, bom attributes, and lead times and ATP check is based on planned output and enabled 24X7 plan.
    When try to perform ATP inquiry either from ASCP/OM responsibility, Instead of showing complete drill down of material constraint at the part level, it "stops" at the model level and shows no availability until the inifinte supply timefence, then unlimited availability after that.
    I was earlier able to view the complete ATP pegging details with ATP dates well within ITF, but however when we re run the plan to include additional SO the above behavior is observed.
    Can some one help me to reslove the issue, as I am not sure what exactly which is triggering this behavior.
    Thanks,

    Thanks for the reply, but this note was not addressing the above stated issue. In this note for matched configuration, they are not able to view pegging else they are able to perform multilevel atp check.
    Can anyone help me to reslove this issue.
    Thanks
    Edited by: user604737 on Jun 18, 2011 4:48 AM
    Edited by: user604737 on Jun 19, 2011 11:50 PM

  • Task Flow Transaction Behavior and AM Activation/Passivation

    Hi All,
    In my app, when I changed the transaction behavior from 'No Controller Transaction' to 'Use Existing Transaction If Possible', I started seeing the following type of AM Passivation snapshot is JDev log:
    <ADFLogger> <begin> Passivating Application Module
    <PCollManager> <resolveName> [3560] **PCollManager.resolveName** tabName=PS_TXN
    <DBTransactionImpl> <getInternalConnection> [3561] Getting a connection for internal use...
    <DBTransactionImpl> <getInternalConnection> [3562] Creating internal connection...
    <ADFLogger> <begin> Establish database connection
    <DBTransactionImpl> <establishNewConnection> [3563] Trying connection: DataSource='weblogic.jdbc.common.internal.RmiDataSource@4d0ca0'...
    <DBTransactionImpl> <establishNewConnection> [3564] Before getNativeJdbcConnection='weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection
    <DBTransactionImpl> <establishNewConnection> [3565] After getNativeJdbcConnection='weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection
    <ADFLogger> <addContextData> Establish database connection
    <ADFLogger> <end> Establish database connection
    <OraclePersistManager> <syncSequenceIncrementSize> [3566] **syncSequenceIncrementSize** altered sequence 'increment by' value to 50
    <ViewObjectImpl> <doPassivateSettings> [3567] DateTimeVO1 passivating with paramsChanged
    <Serializer> <passivate> [3568] <AM MomVer="0">
    <cd/>
    <TXN Def="1" New="0" Lok="2" tsi="0" pcid="40"/>
    <CONN/>
    <VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseRoutingMainVO" Name="BaseRoutingMainVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseRoutingDetailsVO" Name="BaseRoutingDetailsVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseParameterVO" Name="BaseParameterVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseErrorLookupVO" Name="BaseErrorLookupVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseCompDataHdrVO" Name="BaseCompDataHdrVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseCompDataDtlVO" Name="BaseCompDataDtlVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseDataReqValVO" Name="BaseDataReqValVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseRegistrationPointVO" Name="BaseRegistrationPointVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseTradingPrtnrInfoVO" Name="BaseTradingPrtnrInfoVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseTradingPrtnrVerCtrlVO" Name="BaseTradingPrtnrVerCtrlVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseNotificationVO" Name="BaseNotificationVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseTransactionDefVO" Name="BaseTransactionDefVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseValidationTypeVO" Name="BaseValidationTypeVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.OrigTransDetailsVO" Name="OrigTransDetailsVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TradingPartnerBaseVO" Name="TradingPartnerBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS TRADING_PARTNER_ID FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TransErrorVO" Name="TransErrorVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.DateTimeVO" Name="DateTimeVO1">
    <exArgs count="1">
    <arg name="TimeZone">
    <![CDATA[GMT]]>
    </arg>
    </exArgs>
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT CurrentTime FROM
    SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'GMT' AS TZ FROM DUAL
    UNION
    SELECT TO_CHAR(SYSDATE+5.5/24,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'IST' AS TZ FROM DUAL
    UNION
    SELECT TO_CHAR(SYSDATE-8/24,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'PST' AS TZ FROM DUAL
    UNION
    SELECT TO_CHAR(SYSDATE-6/24,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'CST' AS TZ FROM DUAL
    UNION
    SELECT TO_CHAR(SYSDATE-5/24,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'EST' AS TZ FROM DUAL
    WHERE TZ=:TimeZone) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[0000000000010000013239013AC4]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TransTrackingVO" Name="TransTrackingVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TransDependencyVO" Name="TransDependencyVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TradingPartnerBaseVO" Name="TradingPartnerBaseVO2">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS TRADING_PARTNER_ID FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.ReceiverTransDetailsVO" Name="ReceiverTransDetailsVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TransIDBaseVO" Name="TransIDBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (select 1 AS transaction_record_id from DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[000100000002C102]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TransKeyBaseVO" Name="TransKeyBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS document_key FROM dual) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TransStatusBaseVO" Name="TransStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS STATUS FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.ErrorTypeBaseVO" Name="ErrorTypeBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS ERROR_TYPE FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.DependencyBaseVO" Name="DependencyBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS DEPENDENCY FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.MasterTransDependencyVO" Name="MasterTransDependencyVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TrackingVO" Name="TrackingVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.ErrorVO" Name="ErrorVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DashboardTransErrorVO" Name="DashboardTransErrorVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DashboardTransDependencyVO" Name="DashboardTransDependencyVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DashboardTransPieVO" Name="DashboardTransPieVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DashboardMasterTransBarVO" Name="DashboardMasterTransBarVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.ReceiverTransStatusBaseVO" Name="ReceiverTransStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS STATUS FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.ErrorStatusBaseVO" Name="ErrorStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT 'X' AS ERROR_STATUS FROM DUAL]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.HeaderVO" Name="HeaderVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TradingPartnerBaseVO" Name="TradingPartnerBaseVO3"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.HeaderStatusBaseVO" Name="HeaderStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT 'X' AS STATUS FROM DUAL]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TradingPartnerBaseVO" Name="TradingPartnerBaseVO4"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.HeaderSourceFileNameBaseVO" Name="HeaderSourceFileNameBaseVO1">
    <rsq>
    <![CDATA[SELECT 'X' AS SOURCE_FILE_NAME FROM DUAL]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.DependencyStatusBaseVO" Name="DependencyStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT 'X' AS DEPENDENCY_STATUS FROM DUAL]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216382156" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.HeaderSourceFileNameLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_HeaderSourceFileNameBaseVO_HeaderSourceFileNameLOVVO1"/>
    <VO sig="1315216384812" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.ReceiverTransStatusLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_ReceiverTransStatusBaseVO_ReceiverTransStatusLOVVO1"/>
    <VO sig="1315216385921" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.HeaderStatusLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_HeaderStatusBaseVO_HeaderStatusLOVVO1"/>
    <VO sig="1315216387093" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.ErrorStatusLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_ErrorStatusBaseVO_ErrorStatusLOVVO1"/>
    <VO sig="1315216388171" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DependencyStatusLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_DependencyStatusBaseVO_DependencyStatusLOVVO1"/>
    <VO sig="1315216393937" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TransIDLovVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_TransIDBaseVO_TransIDLovVO1">
    <VC n="__ImplicitViewCriteria__" d="true" c="0" bv="true" m="1" j="false">
    <vcp>
    <p n="showInList" v="true"/>
    <p n="displayName" v="Implicit Search"/>
    </vcp>
    <Row n="vcrow1" uc="0" cj="0">
    <a i="0">
    <i o="=" cj="1" uc="0" r="2" vb="false" g="true" e="false" re="false">
    <iv i="0" b="0" sf="0"/>
    </i>
    </a>
    <a i="1">
    <i o="STARTSWITH" cj="1" uc="0" r="2" vb="false" g="true" e="false" re="false">
    <iv i="0" b="0" sf="0"/>
    </i>
    </a>
    </Row>
    </VC>
    <VC n="LOV_TransactionRecordId__lov__filterlist__vcr___" d="true" c="0" bv="true" m="3" j="false">
    <Row n="LOV_TransactionRecordId__lov__filterlist__vcr___" uc="0" cj="0">
    <a i="0">
    <i o="=" cj="1" uc="0" r="2" vb="false" g="true" e="false" re="false">
    <iv i="0" b="0" sf="0">
    <![CDATA[40532]]>
    </iv>
    </i>
    </a>
    </Row>
    </VC>
    </VO>
    </VO>
    </AM>
    <OraclePersistManager> <insert> [3569] **insert** id=1, parid=-1, collid=65951, keyArr.len=-1, cont.len=10035
    <OraclePersistManager> <insert> [3570] stmt: insert into "PS_TXN" values (:1, :2, :3, :4, sysdate)
    <OraclePersistManager> <commit> [3571] **commit** #pending ops=1
    <ADFLogger> <end> Passivating Application Module
    My question is does AM gets passivated on each request. This snapshot is not visible when Transaction behavior is set to 'No Controller Transaction'.
    This type is snapshot is usually visible in case of 'No Controller Transaction', when AM Pooling is off or if AM Pooling is enabled then Failover support is on.
    Is this OK for this snapshot to appear in JDev log or am I missing something?

    this might be helpful, can u chk
    The subtle use of task flow "No Controller Transaction" behavior
    http://blogs.oracle.com/raghuyadav/entry/adf_taskflow_transaction_manag
    http://andrejusb.blogspot.com/2010/01/demystifying-adf-bc-passivation-and.html

  • One model for JTree and JTable

    Hi.
    Is it possible for a JTree and a JTable to share one model?
    Thank you

    Hope u r not using Comonent TreeTable
    If u have Tree & Table different components, just want to have a common model then u can try this,
    It is nothing but default implementation given in DefaultTableModel
    public class MyTreeTableModel extends DefaultTreeModel implements TableModel, Serializable {
    protected Vector dataVector;
    /** List of listeners */
    protected EventListenerList listenerList = new EventListenerList();
    /** The <code>Vector</code> of column identifiers. */
    protected Vector columnIdentifiers;
    public MyTreeTableModel(TreeNode root) {
    this(root, false);
    // constructor for TreeModel only
    public MyTreeTableModel(TreeNode root, boolean asksAllowsChildren) {
    super(root, asksAllowsChildren);
    // constructor for TableModel only
    public MyTreeTableModel() {
    this(0, 0);
    private static Vector newVector(int size) {
    Vector v = new Vector(size);
    v.setSize(size);
    return v;
    // constructor for TableModel only
    public MyTreeTableModel(int rowCount, int columnCount) {
    this(newVector(columnCount), rowCount);
    // constructor for TableModel only
    public MyTreeTableModel(Vector columnNames, int rowCount) {
    super(null);
    setDataVector(newVector(rowCount), columnNames);
    // constructor for TableModel only
    public MyTreeTableModel(Object[] columnNames, int rowCount) {
    this(convertToVector(columnNames), rowCount);
    // constructor for TableModel only
    public MyTreeTableModel(Vector data, Vector columnNames) {
    super(null);
    setDataVector(data, columnNames);
    // constructor for TableModel only
    public MyTreeTableModel(Object[][] data, Object[] columnNames) {
    super(null);
    setDataVector(data, columnNames);
    * Returns a default name for the column using spreadsheet conventions:
    * A, B, C, ... Z, AA, AB, etc. If <code>column</code> cannot be found,
    * returns an empty string.
    * @param column the column being queried
    * @return a string containing the default name of <code>column</code>
    private String getDefaultColumnName(int column) {
    String result = "";
    for (; column >= 0; column = column / 26 - 1) {
    result = (char)((char)(column%26)+'A') + result;
    return result;
    * Returns a column given its name.
    * Implementation is naive so this should be overridden if
    * this method is to be called often. This method is not
    * in the <code>TableModel</code> interface and is not used by the
    * <code>JTable</code>.
    * @param columnName string containing name of column to be located
    * @return the column with <code>columnName</code>, or -1 if not found
    public int findColumn(String columnName) {
    for (int i = 0; i < getColumnCount(); i++) {
    if (columnName.equals(getColumnName(i))) {
    return i;
    return -1;
    * Returns <code>Object.class</code> regardless of <code>columnIndex</code>.
    * @param columnIndex the column being queried
    * @return the Object.class
    public Class getColumnClass(int columnIndex) {
    return Object.class;
    // Managing Listeners
    * Adds a listener to the list that's notified each time a change
    * to the data model occurs.
    * @param     l          the TableModelListener
    public void addTableModelListener(TableModelListener l) {
    listenerList.add(TableModelListener.class, l);
    * Removes a listener from the list that's notified each time a
    * change to the data model occurs.
    * @param     l          the TableModelListener
    public void removeTableModelListener(TableModelListener l) {
    listenerList.remove(TableModelListener.class, l);
    * Returns an array of all the table model listeners
    * registered on this model.
    * @return all of this model's <code>TableModelListener</code>s
    * or an empty
    * array if no table model listeners are currently registered
    public TableModelListener[] getTableModelListeners() {
    return (TableModelListener[])listenerList.getListeners(
    TableModelListener.class);
    // Fire methods
    * Notifies all listeners that all cell values in the table's
    * rows may have changed. The number of rows may also have changed
    * and the <code>JTable</code> should redraw the
    * table from scratch. The structure of the table (as in the order of the
    * columns) is assumed to be the same.
    public void fireTableDataChanged() {
    fireTableChanged(new TableModelEvent(this));
    * Notifies all listeners that the table's structure has changed.
    * The number of columns in the table, and the names and types of
    * the new columns may be different from the previous state.
    * If the <code>JTable</code> receives this event and its
    * <code>autoCreateColumnsFromModel</code>
    * flag is set it discards any table columns that it had and reallocates
    * default columns in the order they appear in the model. This is the
    * same as calling <code>setModel(TableModel)</code> on the
    * <code>JTable</code>.
    public void fireTableStructureChanged() {
    fireTableChanged(new TableModelEvent(this, TableModelEvent.HEADER_ROW));
    * Notifies all listeners that rows in the range
    * <code>[firstRow, lastRow]</code>, inclusive, have been inserted.
    * @param firstRow the first row
    * @param lastRow the last row
    public void fireTableRowsInserted(int firstRow, int lastRow) {
    fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
    TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));
    * Notifies all listeners that rows in the range
    * <code>[firstRow, lastRow]</code>, inclusive, have been updated.
    * @param firstRow the first row
    * @param lastRow the last row
    public void fireTableRowsUpdated(int firstRow, int lastRow) {
    fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
    TableModelEvent.ALL_COLUMNS, TableModelEvent.UPDATE));
    * Notifies all listeners that rows in the range
    * <code>[firstRow, lastRow]</code>, inclusive, have been deleted.
    * @param firstRow the first row
    * @param lastRow the last row
    public void fireTableRowsDeleted(int firstRow, int lastRow) {
    fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
    TableModelEvent.ALL_COLUMNS, TableModelEvent.DELETE));
    * Notifies all listeners that the value of the cell at
    * <code>[row, column]</code> has been updated.
    * @param row row of cell which has been updated
    * @param column column of cell which has been updated
    public void fireTableCellUpdated(int row, int column) {
    fireTableChanged(new TableModelEvent(this, row, row, column));
    * Forwards the given notification event to all
    * <code>TableModelListeners</code> that registered
    * themselves as listeners for this table model.
    * @param e the event to be forwarded
    public void fireTableChanged(TableModelEvent e) {
    // Guaranteed to return a non-null array
    Object[] listeners = listenerList.getListenerList();
    // Process the listeners last to first, notifying
    // those that are interested in this event
    for (int i = listeners.length-2; i>=0; i-=2) {
    if (listeners==TableModelListener.class) {
    ((TableModelListener)listeners[i+1]).tableChanged(e);
    * Returns an array of all the objects currently registered
    * as <code><em>Foo</em>Listener</code>s
    * upon this <code>AbstractTableModel</code>.
    * <code><em>Foo</em>Listener</code>s are registered using the
    * <code>add<em>Foo</em>Listener</code> method.
    * <p>
    * You can specify the <code>listenerType</code> argument
    * with a class literal,
    * such as
    * <code><em>Foo</em>Listener.class</code>.
    * For example, you can query a
    * model <code>m</code>
    * for its table model listeners with the following code:
    * <pre>TableModelListener[] tmls = (TableModelListener[])(m.getListeners(TableModelListener.class));</pre>
    * If no such listeners exist, this method returns an empty array.
    * @param listenerType the type of listeners requested; this parameter
    * should specify an interface that descends from
    * <code>java.util.EventListener</code>
    * @return an array of all objects registered as
    * <code><em>Foo</em>Listener</code>s on this component,
    * or an empty array if no such
    * listeners have been added
    * @exception ClassCastException if <code>listenerType</code>
    * doesn't specify a class or interface that implements
    * <code>java.util.EventListener</code>
    public EventListener[] getListeners(Class listenerType) {
    return listenerList.getListeners(listenerType);
    * Returns the <code>Vector</code> of <code>Vectors</code>
    * that contains the table's
    * data values. The vectors contained in the outer vector are
    * each a single row of values. In other words, to get to the cell
    * at row 1, column 5: <p>
    * <code>((Vector)getDataVector().elementAt(1)).elementAt(5);</code><p>
    * @return the vector of vectors containing the tables data values
    public Vector getDataVector() {
    return dataVector;
    private static Vector nonNullVector(Vector v) {
    return (v != null) ? v : new Vector();
    * Replaces the current <code>dataVector</code> instance variable
    * with the new Vector of rows, <code>dataVector</code>.
    * <code>columnIdentifiers</code> are the names of the new
    * columns. The first name in <code>columnIdentifiers</code> is
    * mapped to column 0 in <code>dataVector</code>. Each row in
    * <code>dataVector</code> is adjusted to match the number of
    * columns in <code>columnIdentifiers</code>
    * either by truncating the <code>Vector</code> if it is too long,
    * or adding <code>null</code> values if it is too short.
    * <p>Note that passing in a <code>null</code> value for
    * <code>dataVector</code> results in unspecified behavior,
    * an possibly an exception.
    * @param dataVector the new data vector
    * @param columnIdentifiers the names of the columns
    public void setDataVector(Vector dataVector, Vector columnIdentifiers) {
    this.dataVector = nonNullVector(dataVector);
    this.columnIdentifiers = nonNullVector(columnIdentifiers);
    justifyRows(0, getRowCount());
    fireTableStructureChanged();
    * Replaces the value in the <code>dataVector</code> instance
    * variable with the values in the array <code>dataVector</code>.
    * The first index in the <code>Object[][]</code>
    * array is the row index and the second is the column index.
    * <code>columnIdentifiers</code> are the names of the new columns.
    * @param dataVector          the new data vector
    * @param columnIdentifiers     the names of the columns
    public void setDataVector(Object[][] dataVector, Object[] columnIdentifiers) {
    setDataVector(convertToVector(dataVector), convertToVector(columnIdentifiers));
    * Equivalent to <code>fireTableChanged</code>.
    * @param event the change event
    public void newDataAvailable(TableModelEvent event) {
    fireTableChanged(event);
    // Manipulating rows
    private void justifyRows(int from, int to) {
    // Sometimes the MyTreeTableModel is subclassed
    // instead of the AbstractTableModel by mistake.
    // Set the number of rows for the case when getRowCount
    // is overridden.
    dataVector.setSize(getRowCount());
    for (int i = from; i < to; i++) {
    if (dataVector.elementAt(i) == null) {
    dataVector.setElementAt(new Vector(), i);
    ((Vector)dataVector.elementAt(i)).setSize(getColumnCount());
    * Ensures that the new rows have the correct number of columns.
    * This is accomplished by using the <code>setSize</code> method in
    * <code>Vector</code> which truncates vectors
    * which are too long, and appends <code>null</code>s if they
    * are too short.
    * This method also sends out a <code>tableChanged</code>
    * notification message to all the listeners.
    * @param e this <code>TableModelEvent</code> describes
    * where the rows were added.
    *                    If <code>null</code> it assumes
    * all the rows were newly added
    public void newRowsAdded(TableModelEvent e) {
    justifyRows(e.getFirstRow(), e.getLastRow() + 1);
    fireTableChanged(e);
    * Equivalent to <code>fireTableChanged</code>.
    * @param event the change event
    public void rowsRemoved(TableModelEvent event) {
    fireTableChanged(event);
    * Obsolete as of Java 2 platform v1.3. Please use <code>setRowCount</code> instead.
    * Sets the number of rows in the model. If the new size is greater
    * than the current size, new rows are added to the end of the model
    * If the new size is less than the current size, all
    * rows at index <code>rowCount</code> and greater are discarded. <p>
    * @param rowCount the new number of rows
    public void setNumRows(int rowCount) {
    int old = getRowCount();
    if (old == rowCount) {
    return;
    dataVector.setSize(rowCount);
    if (rowCount <= old) {
    fireTableRowsDeleted(rowCount, old-1);
    else {
    justifyRows(old, rowCount);
    fireTableRowsInserted(old, rowCount-1);
    * Sets the number of rows in the model. If the new size is greater
    * than the current size, new rows are added to the end of the model
    * If the new size is less than the current size, all
    * rows at index <code>rowCount</code> and greater are discarded. <p>
    public void setRowCount(int rowCount) {
    setNumRows(rowCount);
    * Adds a row to the end of the model. The new row will contain
    * <code>null</code> values unless <code>rowData</code> is specified.
    * Notification of the row being added will be generated.
    * @param rowData optional data of the row being added
    public void addRow(Vector rowData) {
    insertRow(getRowCount(), rowData);
    * Adds a row to the end of the model. The new row will contain
    * <code>null</code> values unless <code>rowData</code> is specified.
    * Notification of the row being added will be generated.
    * @param rowData optional data of the row being added
    public void addRow(Object[] rowData) {
    addRow(convertToVector(rowData));
    * Inserts a row at <code>row</code> in the model. The new row
    * will contain <code>null</code> values unless <code>rowData</code>
    * is specified. Notification of the row being added will be generated.
    * @param row the row index of the row to be inserted
    * @param rowData optional data of the row being added
    * @exception ArrayIndexOutOfBoundsException if the row was invalid
    public void insertRow(int row, Vector rowData) {
    dataVector.insertElementAt(rowData, row);
    justifyRows(row, row+1);
    fireTableRowsInserted(row, row);
    * Inserts a row at <code>row</code> in the model. The new row
    * will contain <code>null</code> values unless <code>rowData</code>
    * is specified. Notification of the row being added will be generated.
    * @param row the row index of the row to be inserted
    * @param rowData optional data of the row being added
    * @exception ArrayIndexOutOfBoundsException if the row was invalid
    public void insertRow(int row, Object[] rowData) {
    insertRow(row, convertToVector(rowData));
    private static int gcd(int i, int j) {
    return (j == 0) ? i : gcd(j, i%j);
    private static void rotate(Vector v, int a, int b, int shift) {
    int size = b - a;
    int r = size - shift;
    int g = gcd(size, r);
    for(int i = 0; i < g; i++) {
    int to = i;
    Object tmp = v.elementAt(a + to);
    for(int from = (to + r) % size; from != i; from = (to + r) % size) {
    v.setElementAt(v.elementAt(a + from), a + to);
    to = from;
    v.setElementAt(tmp, a + to);
    * Moves one or more rows from the inlcusive range <code>start</code> to
    * <code>end</code> to the <code>to</code> position in the model.
    * After the move, the row that was at index <code>start</code>
    * will be at index <code>to</code>.
    * This method will send a <code>tableChanged</code> notification
    * message to all the listeners. <p>
    * <pre>
    * Examples of moves:
    * <p>
    * 1. moveRow(1,3,5);
    * a|B|C|D|e|f|g|h|i|j|k - before
    * a|e|f|g|h|B|C|D|i|j|k - after
    * <p>
    * 2. moveRow(6,7,1);
    * a|b|c|d|e|f|G|H|i|j|k - before
    * a|G|H|b|c|d|e|f|i|j|k - after
    * <p>
    * </pre>
    * @param start the starting row index to be moved
    * @param end the ending row index to be moved
    * @param to the destination of the rows to be moved
    * @exception ArrayIndexOutOfBoundsException if any of the elements
    * would be moved out of the table's range
    public void moveRow(int start, int end, int to) {
    int shift = to - start;
    int first, last;
    if (shift < 0) {
    first = to;
    last = end;
    else {
    first = start;
    last = to + end - start;
    rotate(dataVector, first, last + 1, shift);
    fireTableRowsUpdated(first, last);
    * Removes the row at <code>row</code> from the model. Notification
    * of the row being removed will be sent to all the listeners.
    * @param row the row index of the row to be removed
    * @exception ArrayIndexOutOfBoundsException if the row was invalid
    public void removeRow(int row) {
    dataVector.removeElementAt(row);
    fireTableRowsDeleted(row, row);
    // Manipulating columns
    * Replaces the column identifiers in the model. If the number of
    * <code>newIdentifier</code>s is greater than the current number
    * of columns, new columns are added to the end of each row in the model.
    * If the number of <code>newIdentifier</code>s is less than the current
    * number of columns, all the extra columns at the end of a row are
    * discarded. <p>
    * @param newIdentifiers vector of column identifiers. If
    *                    <code>null</code>, set the model
    * to zero columns
    public void setColumnIdentifiers(Vector columnIdentifiers) {
    setDataVector(dataVector, columnIdentifiers);
    * Replaces the column identifiers in the model. If the number of
    * <code>newIdentifier</code>s is greater than the current number
    * of columns, new columns are added to the end of each row in the model.
    * If the number of <code>newIdentifier</code>s is less than the current
    * number of columns, all the extra columns at the end of a row are
    * discarded. <p>
    * @param newIdentifiers array of column identifiers.
    *                    If <code>null</code>, set
    * the model to zero columns
    public void setColumnIdentifiers(Object[] newIdentifiers) {
    setColumnIdentifiers(convertToVector(newIdentifiers));
    * Sets the number of columns in the model. If the new size is greater
    * than the current size, new columns are added to the end of the model
    * with <code>null</code> cell values.
    * If the new size is less than the current size, all columns at index
    * <code>columnCount</code> and greater are discarded.
    * @param columnCount the new number of columns in the model
    public void setColumnCount(int columnCount) {
    columnIdentifiers.setSize(columnCount);
    justifyRows(0, getRowCount());
    fireTableStructureChanged();
    * Adds a column to the model. The new column will have the
    * identifier <code>columnName</code>, which may be null. This method
    * will send a
    * <code>tableChanged</code> notification message to all the listeners.
    * This method is a cover for <code>addColumn(Object, Vector)</code> which
    * uses <code>null</code> as the data vector.
    * @param columnName the identifier of the column being added
    public void addColumn(Object columnName) {
    addColumn(columnName, (Vector)null);
    * Adds a column to the model. The new column will have the
    * identifier <code>columnName</code>, which may be null.
    * <code>columnData</code> is the
    * optional vector of data for the column. If it is <code>null</code>
    * the column is filled with <code>null</code> values. Otherwise,
    * the new data will be added to model starting with the first
    * element going to row 0, etc. This method will send a
    * <code>tableChanged</code> notification message to all the listeners.
    * @param columnName the identifier of the column being added
    * @param columnData optional data of the column being added
    public void addColumn(Object columnName, Vector columnData) {
    columnIdentifiers.addElement(columnName);
    if (columnData != null) {
    int columnSize = columnData.size();
    if (columnSize > getRowCount()) {
    dataVector.setSize(columnSize);
    justifyRows(0, getRowCount());
    int newColumn = getColumnCount() - 1;
    for(int i = 0; i < columnSize; i++) {
    Vector row = (Vector)dataVector.elementAt(i);
    row.setElementAt(columnData.elementAt(i), newColumn);
    else {
    justifyRows(0, getRowCount());
    fireTableStructureChanged();
    * Adds a column to the model. The new column will have the
    * identifier <code>columnName</code>. <code>columnData</code> is the
    * optional array of data for the column. If it is <code>null</code>
    * the column is filled with <code>null</code> values. Otherwise,
    * the new data will be added to model starting with the first
    * element going to row 0, etc. This method will send a
    * <code>tableChanged</code> notification message to all the listeners.
    public void addColumn(Object columnName, Object[] columnData) {
    addColumn(columnName, convertToVector(columnData));
    // Implementing the TableModel interface
    * Returns the number of rows in this data table.
    * @return the number of rows in the model
    public int getRowCount() {
    return dataVector.size();
    * Returns the number of columns in this data table.
    * @return the number of columns in the model
    public int getColumnCount() {
    return columnIdentifiers.size();
    * Returns the column name.
    * @return a name for this column using the string value of the
    * appropriate member in <code>columnIdentifiers</code>.
    * If <code>columnIdentifiers</code> does not have an entry
    * for this index, returns the default
    * name provided by the superclass
    public String getColumnName(int column) {
    Object id = null;
    // This test is to cover the case when
    // getColumnCount has been subclassed by mistake ...
    if (column < columnIdentifiers.size()) {
    id = columnIdentifiers.elementAt(column);
    return (id == null) ? getDefaultColumnName(column)
    : id.toString();
    * Returns true regardless of parameter values.
    * @param row the row whose value is to be queried
    * @param column the column whose value is to be queried
    * @return true
    public boolean isCellEditable(int row, int column) {
    return true;
    * Returns an attribute value for the cell at <code>row</code>
    * and <code>column</code>.
    * @param row the row whose value is to be queried
    * @param column the column whose value is to be queried
    * @return the value Object at the specified cell
    * @exception ArrayIndexOutOfBoundsException if an invalid row or
    * column was given
    public Object getValueAt(int row, int column) {
    Vector rowVector = (Vector)dataVector.elementAt(row);
    return rowVector.elementAt(column);
    * Sets the object value for the cell at <code>column</code> and
    * <code>row</code>. <code>aValue</code> is the new value. This method
    * will generate a <code>tableChanged</code> notification.
    * @param aValue the new value; this can be null
    * @param row the row whose value is to be changed
    * @param column the column whose value is to be changed
    * @exception ArrayIndexOutOfBoundsException if an invalid row or
    * column was given
    public void setValueAt(Object aValue, int row, int column) {
    Vector rowVector = (Vector)dataVector.elementAt(row);
    rowVector.setElementAt(aValue, column);
    fireTableCellUpdated(row, column);
    // Protected Methods
    * Returns a vector that contains the same objects as the array.
    * @param anArray the array to be converted
    * @return the new vector; if <code>anArray</code> is <code>null</code>,
    *                    returns <code>null</code>
    protected static Vector convertToVector(Object[] anArray) {
    if (anArray == null) {
    return null;
    Vector v = new Vector(anArray.length);
    for (int i=0; i < anArray.length; i++) {
    v.addElement(anArray[i]);
    return v;
    * Returns a vector of vectors that contains the same objects as the array.
    * @param anArray the double array to be converted
    * @return the new vector of vectors; if <code>anArray</code> is
    *                    <code>null</code>, returns <code>null</code>
    protected static Vector convertToVector(Object[][] anArray) {
    if (anArray == null) {
    return null;
    Vector v = new Vector(anArray.length);
    for (int i=0; i < anArray.length; i++) {
    v.addElement(convertToVector(anArray[i]));
    return v;

  • MVC model in Web systems and applications

    MVC model in Web systems and applications
    Object-oriented design model is experience, MVC idea is a user interface for the original. This article discusses how the major application areas in the new Web design patterns and the use of MVC framework. The article first introduced the concept of design patterns and characteristics, and MVC architecture design concepts and analysis of the MVC framework contains several key models. Based on the characteristics of Web applications on how to use patterns and MVC framework made some design ideas.??
    1. Introduction
    1.1 design model
    Object-oriented technology and the emergence of software applications has greatly enhanced the trusted and software quality. Object-oriented programming than previous models to various programming simple and efficient, but the object-oriented design methodology than the previous design methods to complex and much more skill, a good design should be both on the issue of gender, but also to take full account of the problems and needs sufficient interoperability. In the past 10 years, people in the object-oriented technology and the practical application of research to explore certain issues in relation to the creation of a number of good solutions, the so-called object-oriented design patterns. Object-oriented technology is one of the purposes of enhancing the software trusted, and to design model, design programmes in important positions from a deeper sense of meaning and essence embodies trusted. There are many people in the design model definition, which cited Christopher Alexander is the largest design model definition : Each design model is a tripartite rule, which expresses a contextual environment (Context), a problem and a solution. Design models generally following basic elements : model name, the purpose solution effect 1995-1998 code and related design models. There are several classifications design patterns can be divided into a model based on the purpose (Creational), structural type (Structural) and the type of behaviour (Behavioral) three. It is mainly used in the creation of a model-based object model-based structure to deal primarily with the category or combination of objects, used to describe behavior-based model is the main target for the category or how stress and how to allocate responsibilities. Design patterns can be divided into categories based on the scope and target mode model type model dealing with the relationship between the categories and sub-categories, these relations through the establishment of succession in Translation moment to be finalized, are static. Model is targeted at addressing the relationship between the moment of change these relations in the operation, more dynamic. Model features : through the experience acquired in a structured format to write down, avoid encountering the same problems on the first design, exist in different abstract level, in continuous improvement, can be trusted artificial product for the design and best practice in the world to be combined to address larger issues.
    1.2 MVC framework
    MVC was first used in a user interface Smalltalk-80 China. M representative models Model, representatives maps View V, C representatives controller Controller. MVC trusted code with the aim of increasing the rate of data reduction expressed, the data describing the operation and application coupled degrees. Also makes software Keweihuxing, restorative, expansionary, flexibility and packaging of greatly enhanced. Single-user applications are usually incident-driven user interface to the organizational structure. Staff development tool with an interface painting of a user interface interface code based on user input and then prepare to implement the corresponding moves, many interactive development environment encouraged to do so, because it emphasizes first and then a functional interface. Some software design model is the strategy that will be fixed before the code into the regular system of the final. Result is that the procedures and organizations around the user interface elements in the user interface elements of those moves, data storage, applications and functions of the code is used to indicate the way intertwined. In single-user system code structure can be so, because the system will not demand frequent changes. But for a large system such as large Web systems, or e-commerce systems to be applied. Model by incorporating data from a variety of access and control data can be separated to improve distributed system design. MVC design pattern is composed of three parts. Model is the application object, no user interface. Type in the screen showing that it represents the flow of data users. Controller user interface definition response to user input, the users responsible for the action against the Model into operation. Model View data updated to reflect the adoption of data changes.
    2. MVC design pattern,
    An MVC framework for the design of the system includes many models, but with MVC is most closely related to the following three models : Observer, Cambridge and Strategy.
    2.1 Observer models
    MVC through the use of purchase / notification form and the separation of the Model View. View to ensure that their content accurately reflected Model and state. Once Model content changes, there must be a mechanism to allow notification to the relevant Model View, View can be made relevant at the appropriate time updating of data. This design is also more general problems can be solved, the target separation, making a change to the target audience affect others, which targets those who do not know the details of the object being affected. This is described as Observer in the design model. Model type : Observer model is the object-oriented model, it is behaviour-based model. Model purposes : definition of hierarchical dependence relations between objects, or when a target value of the state change, all its dependent relationship with the object are notified and automatically updated. There are a variety of data may show a way, in different ways and may also show. When a way through a changed data, then the other should be able to show immediately that the data change and do accordingly.
    Effect :
    1. Abstract coupling. I only know that it has a target audience of some observers, the observers met each abstract Observer category simple interface, does not know their specific affiliation categories. This makes the coupling between goals and observers smallest and abstract.
    2. Support radio communications. Needless to notify designated observers goals, how to deal with the observer informed decisions.
    3. Possible accidents updated. We update logic, avoiding mistakes updated.
    2.2 Faculty model
    MVC is an important feature of View can nest. Nest can be used for any type of combination of local maps available, but also management of type nest. This thinking reflects the type and mix of components will be equal treatment design. This object-oriented design ideas in the area of Cambridge has been described as a design model. Model types : Cambridge model is the object-oriented model, it is also the structure type model. Model purpose : to target portfolio into tree structures to express "part-whole" level structure. Prepared for the use and combination of individual target audiences with the use of consistency.
    Effect :
    1. Definition of a target portfolio includes simple objects and the structure of the category level. Simple objects may be complex combinations of objects, and can be targeted portfolio mix. This customer-code used in the target areas can use simple combinations target.
    2. Simplify customer-code. Needless to know their customers - a mix of target audiences is a simple target or can use these items in a consistent manner.
    3. Easier to add new types of components. New components can easily be changed to a combination of customer-targeted codes.
    2.3 Strategy model
    Another important characteristic is the MVC can not change the View of changes View response to user input. This often requires a change in response to the logic of the system is very important. MVC to respond to the logic involved in the Controller. Controller of a category level structure could easily change to the original Controller appropriate, a new Controller. View Controller son used to achieve a specific example of such a response strategy. To achieve different response strategy, as long as examples of the use of different types of replacement will Controller. Also in the running time by changing the View Controller for users to change View of response strategies. This View-Controller relationship was described as an example of Strategy design pattern. Model types : Strategy model is the object-oriented model, it is behaviour-based model. Model purposes : definition of a series of algorithms, and their packaging, and ensure that they can replace each other, making algorithms can independently use its customer-change.
    Effect :
    1. Strategy category levels for Context definition of the relevant algorithms can be trusted or behaviour.
    2. Alternative methods of succession. If the direct successor Context, with different acts will be added Context act, the realization of which would algorithm mixed up with Context, Context hard to preserve and expand, but can not dynamically changing algorithms. Will be enclosed in a separate Strategy category algorithms to enable algorithm independent Context change easily cut over expansion.
    3. Can provide the same acts different date.
    4. Strategy-must understand what customers between different.
    5. Context and Strategy communications between costs.
    6. An increase in the number of targets.
    3. MVC in Web application system
    Now some of the distributed systems such as Web-based B2B e-commerce system, suitable for use MVC framework. Through analysis from the perspective of high-level applications can be a target divided into three categories. Category is shown for the target audience consists of a group of commercial rules and data, there is a category that is receiving requests to control commercial target to complete the request. These applications often need to change is shown, such as web style, color, but also need to demonstrate the contents of the display. And the business rules and data to be relatively stable. Therefore, said that the frequent need to change the View objects that the business rules and data model to be relatively stable target, and that the control of the Controller is the most stable. When the system is usually issued after the View objects by artists, designers or HTML/JSP system managers to manage. Controller target applications development personnel from the development and implementation of rules for commercial and business development personnel from the target data, database managers and experts in the field of common completed. Show in Web?? or customers - control logic can be Servlet or JSP, dynamically generated Html. Generally used Servlet better than using JSP. JSP will be better with the Html code of separate codes for page designers and developers of separation efficiency. Servlet and JSP can complete all complete functions, actually JSP eventually converted into a Servlet. And control of the target system exists in every level, the coordination of cross-layer moves. Contain business rules and data objects exist in the EJB layer (EJB-centred model) or Web?? (Web-centred model).
    3.1 View in the Web application system
    View of the system shows that it fully exist in Web??. General by JSP, Java Bean and Custom Tag. JSP can generate dynamic web content using Java Custom Tag easier Bean, but it can show the logic of packaging, and more conducive to modular trusted. Some well-designed in a number of JSP Custom Tag can even be used in different system duplication. Model for control of JSP and Java Bean objects. JSP through Java Bean objects to retrieve the data model, the Model and Controller object is responsible for updating the data on Java Bean. In general, can we devise all possible screen that users can see all the elements of the system. Based on these elements, to identify the public part of passive components and dynamics. Can consider the use of templates means to separate the content generated JSP public, also need to change their generation Html or JSP from a JSP templates to dynamically introduce these different parts (include methods). Another issue to consider is screen option, when dealing with End users request template automatically available to show that the concern that users must know what is the screen components. So can consider all screens on the definition of a centralized document, such as a document or text document java. Taking into account the possibility of changes in future document definition screens, the best use of text documents such as a XML document, so future changes to the recompilation. According to the URL and user input parameters to shine upon the results of a screen, of course, likely to be made on the basis of the outcome of the implementation of actions to choose different results screen. Therefore, the need for a request for matching resources with document (XML), if a URL request several different results, it must specify in the document need to control the flow (a controller object), as well as the corresponding screen different flows.
    3.2 Model in the Web application system
    Model objects represent business rules and business data exist in EJB layer and Web??. In J2EE norms, the system needs some data stored in the database, such as user account information (account model), the company's data (company model), some not recorded in the database. If a user browsing the current catalogue (catalog model), the contents of his shopping (shopping cart model). Which one of these models exist in the data according to their life cycle and scope to decide. In Web?? a HttpSession and ServletContext and Java Bean objects to store data in the EJB layer is a data storage and logic EJB to. Web?? the Java Bean objects stored in the model layer model of the EJB object data copy. Because there are many different EJB tier model targets, so Web?? through a ModelManager to control the EJB layer object model in ModelManger background model can be used for packaging methods. In the EJB layer and the rules have all the data into EJB model is inappropriate. If the database can visit the Dao object model into objects. Dao can be encapsulated and the specific details of the database in the world, if we can write a different table, a number of databases, or even multiple databases. If the orders can be a model for OrderDAO, it may have to deal with Order table, table and OrderItemLines OrderStatus table. Value can also consider the use of targets. Value can be a target of securing long-range targets, because every time the remote object attributes could be a long-range redeployment process will consume network resources. EJB objects in the distance can be used instead target. In the distance, one-time items to be targeted instead of the value of all attributes.
    3.3 Controller in Web application system
    Coordination with the Model View Controller object to the request of users into the system to identify incidents. In Web?? generally a MainServlet (or Main.jsp), and receiving all requests, it can use screen flow management devices (ScreenFlowManger) decided next screen. There is a general request processors RequestProcessor contains all requests are needed to be done to deal with logic, such as the request translated into system events (RequestToEvent). Acting processors usually also includes a request for ClientControlWebImpl, it is logical to deal with the EJB layer in Web?? Acting. In EJB layer, a layer for EJB tier Web ClientController provide the CD visit. Another StateMachine used to create and delete ejb handle Web?? sent to the incident. Controller Another important function is synchronous View and Model data. ModelManger contained in a ModelUpdateManger, it puts events into a Model System assembly that all the needs of synchronous Model, and then notify Listeners do synchronous operation.
    4. Concluding remarks
    In recent years, with the Internet technology development and the emergence of new business models, the Web is based on a large number of applications. On how to design these systems architecture, and gradually there has been some convergence of opinion, the most important point is that its structure should be rational in the open. Demand than ever faster development of technology and design concepts, systems for the future, the cost of upgrading the smallest, research software systems architecture still very useful and necessary.

    Bravo. And your point is?

  • Early 2011 MBP 17 Random Shutdown and Battery Behavior

    Hi all, new to the forums here.
    I recently purchased a refurbished early 2011 MBP 17' 2.2 Ghz i7 with 8gb and 10.7.5. Out of the box, machine looked great, but I noticed that the power cable was different than the one I had for my early 2011 MBP 15' I have for work. This raised an immediate redflag (buying from a refurb site outside of apple is always a cause for concern IMO) so I abstained from using that charger until I knew a little more. I plugged in the machine and booted it up and everything worked great. The batter was close to 100%, so after charging for approximately 20 min, I unplugged it, and the laptop immediately died. I powered it back on, and the harddrive began to spin for a few seconds, then the same result, total loss of power. Started up again, and I was able to boot into OS X and play around for a bit for a period of time before again, shut down.
    For the next few days, same story. I was able to at one point, drain the battery completely and do a full cycle charge. The first time I did this, no change in behavior. Again, a few days later, I was able to drain the battery and perform a full cycle charge, but this time, a major change in behvior. Since the second full cycle charge, I have had absolutely no power problems. I haven't really "pushed" my MBP to see if fully utilizing the CPU/RAM/GPU will produce the similar results I had early, but it appears that everything is working great.
    Here a few interesting notes to my situation.
    When I was first operating the system (when plugged in, there were no shutdowns, only while on the battery) I pulled up my system report, and noticed that my battery cycle was very low (~5). This seemed odd, because I had opted for a used battery instead of a new one.
    Prior to reinstalling Mountain Lion, my volume up key would trigger a few strange events. The screen for briefly get quite bright, then all open applications + the doc and widgets would restart (similar to killing explorer.exe in the windows task manager).
    Since performing the fresh install, I have had abslutely no issue with my MBP and I love it, its a beautiful machine. However, as I purchased refurb, I'm hesitant to proceed (I will exceed my return period in ~2 weeks) without knowing my machine is in prime working condition. I have read issues about early 2011 models having issues with batteries and GPUs, but my symptoms were dissimilar to those described by others with those particular issues.
    Any thoughts?
    I have a genius appointment tomorrow evening for a general diagnostics check, but if others have experienced these issues, I would appreciate some input.

    Do a SMC reset:
    http://support.apple.com/kb/ht3964
    Run an Apple Hardware Test:
    http://support.apple.com/kb/ht1509
    You may need to use OPTION D to start it.
    Install iStat pro and open Activity Monitor.  Set Activity Monitor to show 'All Processes' and '%CPU' to display values from high to low.  Post images of the two such as these:
    Ciao.

Maybe you are looking for

  • IC webclient -help...............

    Hi experts,              The following is a code of standard IC webclient  . <crmic:gridLayoutCell columnIndex="1" rowIndex="<%=lv_r5 %>" colSpan="3"><crmic:label design = "label"                      id = "AccountNo"                      for    = "/

  • Upgrade to 10.7.4

    I want to upgrade to 10.7.4 on my Macbook Pro which is currently running 10.6.8. I purchased and installed 10.7.4 on my Mac desktop last year. Do I have to purchase again for my laptop or can I use my order no. to install on my Macbook Pro?. If yes,

  • Safari crashes when opening a webpage with quicktime embeded

    Everytime i open a page with a quicktime movie, safari crashes. i have RESET SAFARI and EMPTIED THE CACHE, but it is still happening. I dont know if this is related, but i can no longer open I.E. anymore, it crashes at startup. Are these issues relat

  • Anyway to add custom javascript on launching an iView

    Hi Expert,   I would like to see is there anyway to add custom javascript on an iview (which contains standard SAP pcd contain). I would like to invoke a script on the onLoad to trigger a popup windows when that iview launch.

  • Blocked sotck

    Hi gurús, I need some materials after confirming the order of their manufacture, stock entering locked (Blocked stock). How can I do it? Regards Enzo