Sorting on table with transient attributes

Hello all,
I would like to know if it is possible to enable sorting on a table with only transient attributes? I have an advanced table which is based on a VO that has all transient attributes. In this scenario, is there a way to enable sorting? Is this supported? Please let me know.
Thanks in advance
Raja

Raja,
Here are my responses:
I would like to know if it is possible to enable sorting on a table with only transient attributes? >>Yes
I have an advanced table which is based on a VO that has all transient attributes. In this scenario, is there a way to enable sorting?
It does not depends whether the attributes are transient or not as sorting in framework will be done on view instance, you can still enable sorting in advanced table.For details refer to dev guide.Is this supported?>>Yes
--Mukul                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

Similar Messages

  • Sort LOV view with transient attribute

    Hello,
    I am using JDeveloper 12c.
    I have a view object with a list of value. Let's say EmployeeView and EmployeeStatusLovView.
    I have a transient attribute on my list of values. Let's say statusDescription.
    I want to sort my list of value with the transient attribute. How can I do that ?
    I saw that I can easy sort with non transient attribute.
    If it wasn't a LOV, I could override the executeQuery and call setSortBy(), but with a LOV it doesn't work as the executeQuery isn't called.
    Any ideas?
    Thanks,
    Cindy

    Ok I get it. The problem was that I tried to override the executeQuery() instead of executeQueryForCollection(). With LOV the first one is not used. Calling setSortBy("myTransientAttribute") in executeQueryForCollection() works just fine!

  • Can Shuttles be based non-base  table ViewObjects with transient attributes

    Hello,
    Users have to select records from a data collection and a Shuttle looks most appropriate/nice for this purpose. We can introduce technical intersection tables in order to generate the Shuttles with JHeadstart 10g R3 if necessary, but there is no “functional” need to update any data in the database and therefore it would be practical if the ‘right’ side from a Shuttle can be based non-base table ViewObjects with transient attributes only. So, our interested is to know which records have been selected, i.e. moved to the right side from the Shuttle.
    Hope that my question is clear enough.
    Greetings,
    Michael

    Michael,
    This cannot be generated out-of-the-box.
    It is easiest to add the shuttle post-generation to your page, and then create a custom template to generate your custom shuttle into the page. I suggest you take a look at an example of a generated shuttle in a page, and the JHeadstart IntersectionShuttleBean class. You will see that the value property of <af:selectManyShuttle> points to the selectedKeys method in the JHeadstart Shuttle bean. In your case, you can create your own managed bean and bind the value property to your own method which will provide you access to the selected rows. The value property of the selectItem within the af:selectManyShuttle determines the property that is used to identify the selected row (which is the row key in case of Jhs-generated shuttles).
    Steven Davelaar,
    JHeadstart Team.

  • Sort view object rows with transient attributes

    Hi ,
    Is it possible to sort the results of a view object based on the populated transient attributes ?
    Best regards
    K

    K,
    Have you had a look at section 27.5 of the ADF Developer's Guide for Forms/4GL Developers ("Performing In-Memory Sorting and Filtering of Row Sets") - I've not tried it with transient attributes, but it does describe how to do in-memory sorting, as opposed to the normal way of sorting which is to send an ORDER BY to the database.
    Hope this helps,
    John

  • Problem with transient attribute attach to standard vo from the controller

    Hi all,
    I attached two transient attributes to the standard vo through controller.
    Then i passed values to these fields from controller based on another field in the standard vo.
    I created two columns in the table without given the view instance and view attribute.
    But in the controller i'm setting the view instance and view attribute for this two columns.
    After i applied this extended controller it is working fine, but one problem is there.
    Once if i clear the cache and then i enters the page, the extended fields are appearing with null. if i press F5 in the browser then its working fine.
    same problem happens only when the cache cleared or server gets bounced. so i need to go each page and press F5 once then everything is fine.
    Here, I shared my code, please tell me what is the problem and how to solve this.
    Code:
    public void processRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processRequest(pageContext, webBean);
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    OAViewObject cvo=(OAViewObject)am.findViewObject("FinalCompListVO");
    if(!cvo.isPreparedForExecution()){
    cvo.executeQuery();
    if(cvo!=null){
    try{
    String temp1=cvo.findAttributeDef("XXCompNameAttr").toString();
    }catch(Exception e){
    cvo.addDynamicAttribute("XXCompNameAttr");
    try{
    String temp1=cvo.findAttributeDef("XXCompTypeAttr").toString();
    }catch(Exception e){
    cvo.addDynamicAttribute("XXCompTypeAttr");
    Row compRow[]=cvo.getAllRowsInRange();
    for(int i=0; i<compRow.length;i++){
    FinalCompListVORowImpl cVORowImpl=(FinalCompListVORowImpl)compRow;
    String name[]=cVORowImpl.getName().split("\\.");
    String compName=name[2];
    cVORowImpl.setAttribute("XXCompNameAttr",compName);
    for(int i=0; i<compRow.length;i++){
    FinalCompListVORowImpl cVORowImpl=(FinalCompListVORowImpl)compRow[i];
    String name[]=cVORowImpl.getName().split("\\.");
    String compName=name[0];
    if(i==0){
    cVORowImpl.setAttribute("XXCompTypeAttr","Behavioral");
    }else if(i!=0&&compName.equals("FUNC")){
    cVORowImpl.setAttribute("XXCompTypeAttr","Functional");
    break;
    OAMessageStyledTextBean mstb=(OAMessageStyledTextBean)webBean.findChildRecursive("XXCompTypeCol");
    mstb.setViewUsageName("FinalCompListVO");
    mstb.setViewAttributeName("XXCompTypeAttr");
    OAMessageStyledTextBean mstb1=(OAMessageStyledTextBean)webBean.findChildRecursive("XXCompNameCol");
    mstb1.setViewUsageName("FinalCompListVO");
    mstb1.setViewAttributeName("XXCompNameAttr");
    Thanks in advance,
    SAN

    Hi,
    1. ExecuteQuery should already be executed in Base Controller, So please check if you need it. though i don't think that might be causing the issue.
    cvo.executeQuery();
    2. The code where you call findAttributeDef and handle the Exception, Can you debug that portion. As It may not be throwing exception in any case and so the Attributes were never added to VO and Page Displays null..
    I am not sure, but i think the issue seems to be around 2.
    all the best
    -Idris

  • Treetable with transient attributes

    Hi,
    I use JDeveloper 11.1.1.2.0 to develope an ADF application.
    I need to create and show two level treetable using viewobjects theese have only transient fields.
    I have two viewobjects and a viewlink described below:
    1. VO : AccountsVO
    2. VO : ProductsVO
    Viewlink : ProductsOfAccountVL
    An account can has a lot of products. Both of viewobjects have only transient attributes.
    I have to use transient attributes because of the architecture of the application.
    I create and insert the rows to the viewobjects in managed bean.
    I need to create a treetable like below :
    AccountName1 AccountDesc1
    ---ProductNo1 ProductName1 ProductDesc1
    ---ProductNo2 ProductName2 ProductDesc2
    AccountName2 AccountDesc2
    ---ProductNo3 ProductName3 ProductDesc3
    When I drag and drop the parent VO as an ADF Tree Table then run the application, I could see only first level records.
    I mean only Accounts are shown.
    The viewlink doesn't work. Is this a bug or is it normally work like this.
    Finally I intend to create and add child node programmatically, but I don't know is it possible or not and how could it be done.
    What do you advice or what is the correct way.
    Mehmet
    Thanks.
    Edited by: mdoldur on 03.Haz.2010 12:33

    Hi Frank,
    I don't have any entity object, so I get the informations from a few different modules and
    insert them to the programmatic viewobjects which have transient attributes.
    In fact I could create 2 temporary tables on the database but I am not allowed to change the database schema.
    By the way I have updated my JDeveloper from 11.1.1.2 to 11.1.1.3 I will try the same operation and inform you.
    Thanks.
    Mehmet.

  • Problem extending a VO with transient attributes

    I am trying to extend a VO that is based on a query with a Binding Style of Oracle Positional.
    The Attributes that are listed for the original VO are the attributes from the Query Statement plus some transient attributes.
    I extended the VO by modifying the query. Added my two columns at the END of the Select statement.
    Successfully substituted the VO but I am getting a runtime error when saving a record.
    Reviewed the extended VO and noticed that the new columns are listed as attributes AFTER the transient attributes.
    This could be the cause of the runtime error since one of the transient attributes listed after the query attributes is RowChanged.
    How can I force my new attributes to be positioned BEFORE the transient attributes?
    Is this the problem or is it something else?
    Thanks for any suggestions.

    Runtime error:
    java.lang.NullPointerException
         at oracle.apps.pos.supplier.server.ByrSuppAMImpl.validateDffVo(ByrSuppAMImpl.java:3575)
    Yes, I have checked the attributes (Updateable Always, etc.) and the attribute mappings and they all seem fine.
    My two new attributes are at the end of the original attributes. I think my new attributes should NOT be at the end of the original attributes because the original VO.xml has attributes from the query and then transient attributes that are not from the query. My extended VO now has the attributes from the original query, the transient attributes, and then my new attributes from the query.
    The first two transient attributes are RowChanged and RenderFlex and it seems like OAF is confusing it with my new attributes because:
    (1) the runtime error I get when saving (RowChanged attribute)
    (2) the Flex field icon grays out after my VO extension was deployed (RenderFlex attribute)
    To test out my theory, I would like to move my new attributes to be listed BEFORE the transient attributes.
    I tried editing the VO.xml file by moving my new attributes (query-related) to the end of the other query-related attributes and before the transient attributes (that are not query-related). When I try to view my changes inside JDeveloper, the attributes are shown in the new order (on the left) but the query mappings are still listed in the old order.
    Where can I re-order the query mappings? Tried using the up/down arrows on the right but it's grayed out.
    If I re-order the attributes in the VO.xml file and save it, is that all the change I need to do?
    Thanks.

  • Sort a table with two columns based on the first

    I have a powershell table with the columns 'Used Perc' and 'ID'.
    This was formed from the following 
    $a = @{Expression={[System.Math]::Round(($_.nUsed_Avg/$_.nSize)*100,1)};Label="Used Perc";width=25}, @{Expression={$_.nStatisticalDiskIdentificationID};Label="ID";width=15}
    $GLOBAL:CSV2 = Import-CSV $STATDISKOUT | Format-Table $a
    Before this, the file $STATDISKOUT had the columns 'nUsed_Avg', 'nSize', and 'nStatisticalIdentificationID'.
    My question is, how would I sort the new table based on 'Used Perc' but keeping the corresponding 'ID' column lined up to the right value?

    We use a select statement to reorder columns and recalculate,  The formatters just go at the end to adjust the display.
    Import-Csv <file> | select <column order format> | Format-Table
    or you can do it in the table:
    Import-Csv <file | Format-Table -Properties ,f1.,f2.,,f3....Here is how to inset a sort inline:
    $a=@{
    L='ID';
    E={$_.nStatisticalDiskIdentificationID};
    L='Used Perc';
    E={[System.Math]::Round(($_.nUsed_Avg/$_.nSize)*100,1)}
    Import-CSV $STATDISKOUT | Select $a | Sort 'Used Perc' | Format-Table -Auto
    ¯\_(ツ)_/¯

  • Sort a Table with data extracted form Another table

    I have a MAster Table that consist of many columns of data. I have extracted data (rows) from the table to another table for a list. I used vlookup to get the extracted data. In my new table everything is list ed out perfectly. I want to sort the table using one of the columns. I tried the reorganize button and just sorting on that one column and it won't sort. I know I'm doing something wrong whether the way I am extracting the data,or something else. Do I use lookup and large or small function to list and sort it from the main table? I stumped. Anybody have sugestions?

    Hi tj,
    "The Master file is the second image. I have extracted the data for the second table(second image). "
    Hmmm...
    Both tables are the second image. Good trick!
    Good thing you included the description.
    The (modified) Master table is Table 1 on Sheet 15. From this, you are extracting the participants for "R & B Winter Sk8 Jam. You want the extracted rows to be displayed on the Contestant Sheet table sorted by Division.
    I see two possible lines of attack here:
    The simplest might be to presort the Master table on Division, then within that sort, on last name, then on first name. With the Master table in that order, extracting the data using the index you are currently using should pull the rows in the desired order.
    Construct an index of numerical values constructed from the sum of:
    -- a very large number corresponding to the event, pulled from a Lookup table.
    -- a large numbers corresponding to the division, pulled from a second Lookup table.
    -- a small number corresponding to he count (from the top of the main tale to the current row) of Sk8ers entered in each event. (This, I think, would be the same as the count in your Index column.)
    Retrieval would be done using RANK to determine the smallest and largest index values to retrieve, and SMALL to collect data from the rows with index values within that range.
    No. 2 is at the concept stage, and is open to anyone wanting to give it a go.
    Regards,
    Barry

  • Sorting internal table with line types

    Hi,
    I have internal table juts for an example with four entries as below:
    A[]
    Line.....Line Types
    444001.....P
    New York...C 
    Evershine..B
    Mary.......N
    I want to sort the internal table with line types in order of lin types NBCP.
    How can i do this ?
    Please help.
    Note: Above example is just with four entries, there might be internal table with ten entries and ten defined sorting order for line types.

    Hi Tushar,
    Please note that we can't changes the mandatory sequence of the address format as defined in the country specif address format. We can change the sequence of others fields by line_priority.
    Try to change the address type :
    ADDRESS_TYPE - Address type (from 3.0C)
    There are three types of address:
    Address type '1': addresses of firms or organizations; the address structure which is used in most SAP applications as 'Address'.
    Address type '2': address of a person
    Address type '3': work address, usually the address of a contact person in a company
    Please use T/code "OY01"> Select Country> Example :AU"--> Display --> Select address key and press F1. You will find SAP 's Address format configuration .
    sap help:
    Formatting Routine Key for Printing Addresses
    For printing addresses, there are country-specific routines which in each case copy the correct postal formatting of the address.
    The three-character "Address Layout Key" for the recipient country controls which of the routines available for formatting addresses in the relevant country is used.
    These routines are programmed into the ADDRESS_INTO_PRINTFORM function module.
    They are based on different national and international guidelines and norms, including:
    ISO 11180,
    contracts of the World Postal Union (Seoul 1994),
    international address samples from the World Postal Union
    as well as the available rules of the individual countries.
    Below you will find an overview of the country-specific formats currently implemented.
    Customers can program their own formatting routines using a customer exit. The SZAD0001 SAP enhancement has been defined in the package SZAD for this (-> transaction CMOD).
    General formatting rules
    The following parameters are used depending on the transaction:
    whether the company address (street/house number) or the P.O. Box address is printed if both exist,
    how many lines are available for printing,
    which is the sender country.
    If there are not enough lines, then lines are left out according to a standard sequence.
    The address format depends on whether the sender country is the same as, or different from, the recipient country. The country is always specified from abroad, either as a text name, or as an identification code of up to three characters (license plate code or country key).
    Where the country name is written out in full, it is written in the language of the sender country. If a language is not specified for the sender country, or the sender country itself is not specified, the logon language is used instead.
    Exception: the language for the country code can be explicitly overwritten by a parameter in the print program (e.g. when the country code for customs transit papers is always to be specified in a particular language, such as English). if the "Print country name in recipient language" flag is set in the print program, the recipient language is used.
    Other language-dependent components such as the title and the word 'PO Box' are printed in the recipient language or the recipient country language. If this cannot be determined, the logon language is again used.
    For all formats except Great Britain (006), Japan (013), and South Korea (017), the core of the address is formatted as follows (without empty lines, except for the compulsory empty line:)
    title line (if applicable)
    name block (differs depending on the address type, see below)
    street address or PO Box
                            (compulsory empty line, if applicable)
    city line with postal code
    country code (if applicable)
    The city line and the country name are always printed in upper case for foreign addresses (only for the complete address, not for short forms).
    The name block generally consists of the following:
    "Normal" addresses (address type SPACE and address type 1):
    NAME1
    NAME2
    NAME3
    NAME4
    Personal addresses (address type 2):
    Title of person and name of person
    Business address with department and contact person (address type 3):
    NAME1
    NAME2
    NAME3
    NAME4
    department
    title of person and name of person
    In addresses entered using Business Address Services (central address management) (see Release notes Central Address Management for Release 4.0 and Central Address Management for Release 4.5 ), the street address can comprise several lines (see Print street address), otherwise street and house number are maintained in the Street field.
    Some countries do not have a compulsory empty line (see notes below). The city and district are printed in the city line, connected by a hyphen (exceptions: 004 USA, 006 Great Britain/Ireland, 013 Japan, 015 Germany, 017 South Korea, 019 Denmark), provided that the total length does not exceed 35 characters. If a different city is specified for the PO Box (PFORT), this is used in the PO Box address.
    In all formats which use a country code (currently 001 European standard format 002 Italy, 011 Switzerland and 014 Austria ), the license plate code for that country is used. If this is not maintained, the country key in table T005 is used.
    If the "Print country name in foreign addresses" flag is set for the sender country in table 005, the country code is not used; the country name is printed in the last line of the address.
    Formats 004 (USA), 005 (Canada) and 008 (Singapore) contain a line ('F') for the function of the contact person in the company (if address type = '3'). This line comes immediately after the line 'N' (Name (and title) of the natural person).
    In formats 002 (Italy), 004 (USA), 005 (Canada), 006 (Great Britain), 007 (Brazil) and Australia (009), the REGIO field (Region, State, Province, County) is formatted. For the USA, Canada, Brazil and Australia, the key from table T005S is used; for Great Britain the text name from table T005U.
    In all countries for which no "Address structure key" is maintained, a standard format is used which corresponds to format "010".
    Hope this may help you.
    Lanka

  • Sorting internal table with variable no of fields

    Hi ,
    I want to sort the internal table with variable no of fields . Every time the  report is run the number of fields as well as the sequence by which the table has to be sorted changes . How to do this .
    regards

    Hi,
    Please try this.
    DATA: BEGIN OF ITAB OCCURS 0,
            F1(4),
          END OF ITAB.
    DATA: BEGIN OF ITAB2 OCCURS 0,
            F1(1),
            F2(1),
            F3(4),
          END OF ITAB2.
    ITAB-F1 = '01AC'.
    APPEND ITAB.
    ITAB-F1 = '02AB'.
    APPEND ITAB.
    ITAB-F1 = '01CD'.
    APPEND ITAB.
    ITAB-F1 = '02CA'.
    APPEND ITAB.
    LOOP AT ITAB.
      ITAB2-F1 = ITAB-F1+2(1).
      ITAB2-F2 = ITAB-F1+3(1).
      ITAB2-F3 = ITAB-F1.
      APPEND ITAB2.
    ENDLOOP.
    SORT ITAB2 BY F1 ASCENDING
                  F2 DESCENDING.
    LOOP AT ITAB2.
      WRITE: / ITAB2-F3.
    ENDLOOP.
    REWARD POINTS IF HELPFUL

  • Getting error when trying to extend standard VO with transient attributes

    Hello,
    I am trying to extend the standard VO ReqSummaryVO in iprocurement module and getting the error "Each Row in the Query Result Columns must be mapped to a unique Query Attribute in the mapped entity columns" at step 4. This VO has a lot of transient attributes. I have gone through solutions from other threads related to this error but none of them worked for me. Can someone help me on this please?
    Thanks,
    Girish.

    Hello,
    I am trying to extend the standard VO ReqSummaryVO in iprocurement module and getting the error "Each Row in the Query Result Columns must be mapped to a unique Query Attribute in the mapped entity columns" at step 4. This VO has a lot of transient attributes. I have gone through solutions from other threads related to this error but none of them worked for me. Can someone help me on this please?
    Thanks,
    Girish.

  • Sort a table with no index or key defined?

    Greetz!
    I've got a script that builds a table, table A, by doing a select into. Later, a select is done on that table and an order by added. However the sort order is not persisting. Could this be due to there being no indexes or primary keys defined
    on table A? Can a sort be done on a table without an index of any kind?
    Thanks!
    Love them all...regardless. - Buddha

    To add to Erland's comment
    You cannot "look" directly at the contents of a table - you must use a query to generate a resultset.  And a resultset, just like a table, has no defined order unless it was generated using an order by clause.  Any order you might observe
    is simply an artifact of your data, the load on the db engine, the currently cached data, and many other factors.  If you see a consistent order, you might be tempted to assume such an order will always exist.  Don't be tempted.  Many others
    have been so tempted and have discovered the incorrectness of this assumption at a later date - often at an inconvenient time.

  • Fetching vo results with transient attributes

    Hi, I have a filterable table bound to a view object.
    I created a custom multiple select functionality by adding a checkbox to each row. The checkbox correlates to a transient value on the view object. When the checkbox is selected, the transient value is set to true.
    I have a "select all" option at the top of my table, and when that is selected, it goes through all of the rows in the view object and updates the transient value to be true, then all of the rows should be selected in the ui.
    The range I have set on the iterator is 100 fetched rows at a time, but many times the total in the view object is around 1000.
    When the "select all" feature is selected, all 1000 rows are getting their transient value set in my backing bean, but this is not reflected in the UI.
    When I scroll down, 100 rows have the checkbox selected, and past that, new rows are fetched, and they aren't appearing to be selected (even though I specifically setting the value to true in the backing bean).
    Does anyone have an idea on how I can set and see a transient value for rows that have not yet been fetched?
    Thanks,
    Joel

    Hi, I have a filterable table bound to a view object.
    I created a custom multiple select functionality by adding a checkbox to each row. The checkbox correlates to a transient value on the view object. When the checkbox is selected, the transient value is set to true.
    I have a "select all" option at the top of my table, and when that is selected, it goes through all of the rows in the view object and updates the transient value to be true, then all of the rows should be selected in the ui.
    The range I have set on the iterator is 100 fetched rows at a time, but many times the total in the view object is around 1000.
    When the "select all" feature is selected, all 1000 rows are getting their transient value set in my backing bean, but this is not reflected in the UI.
    When I scroll down, 100 rows have the checkbox selected, and past that, new rows are fetched, and they aren't appearing to be selected (even though I specifically setting the value to true in the backing bean).
    Does anyone have an idea on how I can set and see a transient value for rows that have not yet been fetched?
    Thanks,
    Joel

  • Query on Locked entry and sorting a table

    Hello Friends,
    I have a query on the below
    1. I am running a BDC for TCODE IK11. sO IN A loop i use call transaction statement for
    updating the records. When the first record is created for a measurement point
    by running the tcode then the second recordshows that the measurement point is locked.
    and it doesnt let another record getting updated.
    what should be done in this case.
    2. I am trying to simply sort a table with the three fields.
    point date time. When i sort the table  by only point and time in descending order its
    working fine but when i am trying to sort the table by point date time it is not sorting
    it in descending order.
    My requirement is that i want the latest date and time of the measurepoint created in the system.
    Pls Help.
    Thanks
    Rohit

    Hi,
    Thanks, SupportsSortCollection is the one I was missing.
    Although now I can click the headings, it is pretty useless because sorting behaves totally erratic. (This is true even if showing the entire table, not only a given range of it.)
    For example the following happen randomly:
    - Mostly a columns is not sorted properly. After clicking it e.g. 3-4 times, it is sorted properly, but only in one of the orders (e.g. descending).
    - The ascending or descending order of the rows varies from click to click. E.g. the ascending order of rows is not the same every time.
    - Sometimes clicking does nothing, no sorting is fired.
    - Etc...
    So basically my question is still the same as in my first post. :(
    Regards,
    Patrik

Maybe you are looking for

  • How to extract the a date field from a text value?

    Hi,                                   SAMLE TEXT       Date: 06-FEB-14 02:47:07 I have sample column in flat file like mentioned above, i need to capture only the date from this column. Can anyone please help me on how to extract this date from the c

  • SAP-BW general

    Hi, I am working as an abaper and have got an opportunity to move to SAP-BW. I dont have much idea about BW. please throw some light on BW and guide me whether to move from abap to BW. thanks and regards victor

  • Picking wrong Receiver Interface

    Hi, I am working on IDoc to SOAP scenario using BPM. When we are triggering 100 idocs at a time, in that 2-3 are picking wrong receiver interface and other are working properly. Why this is happening and how to correct it? Thanks & Regards, Pragathi.

  • One single button for "Ready" and "Not Ready"?

    Hi all! Is there a possibility to assign a service URL for changing the agent state from "Ready" to "Not Ready"? Just like the "One Button Login" ... Best regards; Florian

  • Mac printer driver for IKON Business Pro 500c

    I have a PowerPC G4 running OS 10.3.9. I work in an office that has a networked IKON Business Pro 500c multifunction printer. Anyone know where I can locate a printer driver for that printer so that I can access the printer features from my Mac ? I c