Sunday, 21 September 2014

How to Print The Current Visualforec Page with the help of JavaScript.

There is a method name is Window.print() in JavaScript.
The print() method opens the Print Dialog Box, which lets the user to select preferred printing options.

So, In visualforce page we use this method in commandButton's onclick attribute.


<apex:commandButton onclick="window.print()" value="Print"/>


Simple and after clicking on Print button the print method prints the contents of the current Visualforce page.

Custom Exception in Salesforce

public class CustomExceptionClass {
   
// define custom exception with extend the built-in Exception class
// And make sure your class name ends with the word Exception,
// else you get Compile Error: Invalid type

class MyException extends Exception{

    //Override the getMessage method of Exception class to show you custom Error
  override public String getMessage(){
  return 'The Show is HouseFull, No more Tickets are available';
  }

}

// declare custom exception variable
        MyException myExceptionVar = null;
   
 //Constractor of OuterClass
        public CustomExceptionClass(){
            // create object of Custom Exception class
            myExceptionVar = new MyException();

        }

        Integer TotalTickets = 5; // define some custom limit for error condition
 // Define some person name who booked ticket
        List<String> PersonName = new String[]{'Harry','Ron','Hermione'};  

        public Boolean addPerson(String newPersonName){ // Add another person
            Boolean TicketBooked = false;
         
            //use try Catch for Exception
            try{  
                    //Check the List
            if(PersonName.size() >= TotalTickets) // If return True then throw Exception
           throw myExceptionVar;
                    // Throw Exception it'll show the error which we written in getMessage
               
                else //Else Add the Person name
                PersonName.add(newPersonName);

                TicketBooked = true;

            }
            //Catch block
            catch(Exception e){
                TicketBooked = false;
                System.debug('we are in catch block');
                System.debug(e.getMessage());
            }
            finally{
             
                if(TicketBooked)
                System.debug('Ticket Booked successfully');
                else
                System.debug('Booking failed');
               }
               return TicketBooked ;

        }
}


// Execute Following

CustomExceptionClass a = new CustomExceptionClass();
//Current list size is 3  ('Harry','Ron','Hermione') and limit is 5 so we can add two more

a.addPerson('Viru'); // Ticket Booked Successfully
a.addPerson('Emma'); // Ticket booked Successfully

//current list size id 5  and limit is 5 so we are not good
a.addPerson('Draco');  //Booking failed 

Tuesday, 16 September 2014

BODMAS Rule

B → Brackets first (parentheses)

→ Of (orders i.e. Powers and Square Roots, Cube Roots, etc.)

DM  Division and Multiplication (start from left to right)

AS → Addition and Subtraction (start from left to right)

Note:

(i) Start Divide/Multiply from left side to right side since they perform equally.

(ii) Start Add/Subtract from left side to right side since they perform equally.

Steps to simplify the order of operation using BODMAS rule:

First part of an equation is start solving inside the 'Brackets'.

For Example; (6 + 4) × 5
First solve inside ‘brackets’ 6 + 4 = 10, then 10 × 5 = 50.


Next solve the mathematical 'Of'.

For Example; 3 of 4 + 9
First solve ‘of’ 3 × 4 = 12, then 12 + 9 = 21.


Next, the part of the equation is to calculate 'Division' and 'Multiplication'.
We know that, when division and multiplication follow one another, then their order in that part of the equation is solved from left side to right side.

For Example; 15 ÷ 3 × 1 ÷ 5

Multiplication’ and ‘Division’ perform equally, so calculate from left to right side. First solve 15 ÷ 3 = 5, then 5 × 1 = 5, then 5 ÷ 5 = 1.


In the last part of the equation is to calculate 'Addition' and 'Subtraction'. We know that, when addition and subtraction follow one another, then their order in that part of the equation is solved from left side to right side.

For Example; 7 + 19 - 11 + 13

Addition’ and ‘Subtraction’ perform equally, so calculate from left to right side. First solve 7 + 19 = 26, then 26 - 11 = 15 and then 15 + 13 = 28.

These are simple rules need to be followed forsimplifying or calculating using BODMAS rule.


In brief, after we perform "B" and "O", start from left side to right side by solving any "D"or "M" as we find them. Then start from left side to right side solving any "A" or "S" as we find them.

How to use BODMAS rule

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test {

    public static void main(String[] args) {
        String orgString = "(3+4)*(7/2)";
        System.out.println(findValueInBraces(orgString));

    }

    public static String findValueInBraces(String finalStr) {

       while (finalStr.contains("(") && finalStr.contains(")")) {

            int fIndex = finalStr.indexOf("(");
            int nIndex = finalStr.indexOf(")");
            String subString = finalStr.substring(fIndex + 1, nIndex);
            

            finalStr = finalStr.substring(0, fIndex) + calculate(subString) + finalStr.substring(nIndex +1, finalStr.length());
        }
        return calculate(finalStr);

    }

    public static String calculate(String finalString) {

        while (finalString.contains("(") && finalString.contains(")")) {
            findValueInBraces(finalString);
        }
        while (!isNum(finalString)) {
            List<Integer> positions = getOperandPosition(finalString);
            int pos = positions.get(0);
            if (positions.size() >= 2 && positions.get(1) != null) {
                int nxtPos = positions.get(1);
                finalString = getValue(finalString.substring(0, nxtPos), pos)
                        + finalString.substring(nxtPos, finalString.length());
            } else {
                finalString = getValue(
                        finalString.substring(0, finalString.length()), pos);
            }
        }
        return finalString;

    }

    public static boolean isNum(String str) {
        if (str.contains("+") || str.contains("-") || str.contains("*")
                || str.contains("/")) {
            return false;
        }
        return true;
    }

    public static List<Integer> getOperandPosition(String str) {

        List<Integer> integers = new ArrayList<Integer>();

        if (str.contains("+")) {
            integers.add(str.indexOf("+"));
        }

        if (str.contains("-")) {
            integers.add(str.indexOf("-"));
        }

        if (str.contains("*")) {
            integers.add(str.indexOf("*"));
        }

        if (str.contains("/")) {
            integers.add(str.indexOf("/"));
        }

        Collections.sort(integers);
        return integers;
    }

    public static String getValue(String str, int pos) {
        double finalVal = 0;
        double a = Double.parseDouble(str.substring(0, pos));
        double b = Double.parseDouble(str.substring(pos + 1, str.length()));
        char c = str.charAt(pos);

        if (c == '*') {
            finalVal = a * b;
        } else if (c == '/') {
            finalVal = a / b;
        } else if (c == '+') {
            finalVal = a + b;
        } else if (c == '-') {
            finalVal = a - b;
        }
        return String.valueOf(finalVal);
    }
}

Wednesday, 10 September 2014

Pagination in Visualforce Page (Add Next, Previous button on Visualforce page )

Here is some code snippet for the Pagination in Visualforce page.
We have to use StandardSetController for that.

Here we go-
Visualforce page: 

<apex:page controller="Pagination_min">
<apex:form >
    <apex:pageBlock >
        <apex:pageBlockSection columns="1" >
            <apex:pageBlockTable value="{!accounts}" var="a">
               <apex:column value="{!a.Name}"/>
                <apex:column value="{!a.Type}"/>
                <apex:column value="{!a.BillingCity}"/>
                <apex:column value="{!a.BillingState}"/>
                <apex:column value="{!a.BillingCountry}"/>
            </apex:pageBlockTable>
            <apex:panelGrid columns="7">
            <apex:commandButton value="|<" action="{!setcon.first}" disabled="{!!setcon.hasPrevious}" title="First page"/>
            <apex:commandButton value="<" action="{!setcon.previous}" disabled="{!!setcon.hasPrevious}" title="Previous page"/>
            <apex:commandButton value=">" action="{!setcon.next}" disabled="{!!setcon.hasNext}" title="Next page"/>
            <apex:commandButton value=">|" action="{!setcon.last}" disabled="{!!setcon.hasNext}" title="Last page"/>
           
             <apex:outputText >{!(setCon.pageNumber * size)+1-size}   -    {!IF((setCon.pageNumber * size)>noOfRecords, noOfRecords,(setCon.pageNumber * size))} of {!noOfRecords}</apex:outputText>
                <apex:commandButton value="Refresh" action="{!refresh}" title="Refresh Page"/>
             
            </apex:panelGrid>
        </apex:pageBlockSection>
    </apex:pageBlock>
</apex:form>
 

</apex:page>



Custom Controller-

public class Pagination_min {

    Public Integer noofRecords {get; set;}
    public integer size {get; set;}
   
    public Apexpages.standardsetController setcon{
        get{
            if(setCon == null){
                size = 10;
                String queryString = 'Select Name, Type, BillingCity, BillingState, BillingCountry from Account order by Name';
                setcon = new apexpages.standardsetController(Database.getquerylocator(queryString));
                setcon.setpagesize(size);
                noofRecords = setcon.getResultsize();
            }
            return setcon;
        }
         set;
    }
    Public list<Account> getAccounts(){
        list<Account> acclist = new list<Account>();
         for(Account ac : (list<Account>)setcon.getrecords()){
             acclist.add(ac);
         }
        return accList;
       
     
    }
   
    Public PageReference Refresh(){
       
        setcon=null;
        getAccounts();
        setcon.setpageNumber(1);
       
        return null;
    }
}


Just copy and paste this code and BOOM First, Next, Previous and Last buttons are start doing there work.

Wednesday, 30 July 2014

Call Custom Button in Visualforce page without custom controller

Here Custom_Button is the name of my custom button on opportunity object.

<apex:page standardController="Opportunity" >
    <apex:form >
              <apex:commandButton value="Edit" action="{!URLFOR($Action.Opportunity.Custom_Button,Opportunity.id)}"/>
    </apex:form>
</apex:page>

Saturday, 17 May 2014

Salesforce Spring'14 Release Dumps

1. How can an administrator customize reporting for users?
a. Hide report types from all users.
b. Limit the number of reports a single user can create.
c. Enable historical trending reports for campaigns.
d. Remove footer information from exported reports.

2. What option is available to a user when building a dashboard?
a. Group and name dashboard filter values.
b. Display data from multiple reports in a single component.
c. Add up to 50 components to a single dashboard.
d. Display fractions as percentages in a table component

3. How can Salesforce Files Sync be used?
a. Sync files between Salesforce and your computer.
b. Share files with users by profile or role.
c. Collaborate on files with Chatter users and groups.
d. Control which version of a file is visible to each user.

4. What can an administrator do using SalesforceA on a mobile device?
a. Assign a user to a custom profile.
b. Reset a users password.
c. Freeze a user.
d. Create a new user.
e. Assign a permission set to a user.

 
5. What is a capability of Salesforce Orders?
a. Orders can be created directly from an account or contract.
b. Account and contract fields on an order can be modified.
c. An order can be associated with multiple price books.
d. Reduction orders can be created to process product returns.


6. How can an administrator control access to the Salesforce1 mobile application?
a. Enforce IP restrictions for mobile devices.
b. Define which users have login access.
c. Create and assign a mobile configuration.
d. Assign the Mobile User a standard profile.

7. What is a capability of the Data Import Wizard?
a. Example import values are displayed to help with field mapping.
b. Records can be imported for all standard and custom objects.
c. An import file can be dragged into the wizard for uploading.
d. Field mappings can be saved and used in later imports.

8. How can an administrator customize reporting for users?
a. Enable historical trending reports for campaigns.
b. Hide report types from all users.
c. Limit the number of reports a single user can create.
d. Remove footer information from exported reports.